Comment pourrais-je implémenter une simple recherche de site avec php et mySQL?
Je suis de la création d'un site qui permet aux utilisateurs de soumettre des devis. Comment pourrais-je aller sur la création d'une (relativement simple?) de recherche qui renvoie le plus pertinent d'un devis?
Par exemple, si le terme de recherche a été "la turquie" puis je retourne les guillemets où le mot "turquie" apparaît deux fois avant de citations où il n'apparaît qu'une fois.
(Je tiens à ajouter quelques autres règles de filtrage des résultats non pertinents, mais ma principale préoccupation est que.)
source d'informationauteur stalepretzel
Vous devez vous connecter pour publier un commentaire.
Tout le monde suggère une recherche fulltext MySQL, cependant, vous devriez être au courant d'un ÉNORME inconvénient. Le texte complet de moteur de recherche est disponible uniquement pour le moteur MyISAM (pas MyISAM, qui est le plus couramment utilisé de moteur en raison de son intégrité référentielle et de l'ACIDE de la conformité).
De sorte que vous avez un peu d'options:
1. L'approche la plus simple est décrite par des Des Particules De L'Arbre. Vous pouvez actaully faire un classement des recherches hors de pur SQL (pas de texte intégral, ni rien d'autre). La requête SQL ci-dessous sera à la recherche d'une table et de classer les résultats selon le nombre d'occurrences d'une chaîne de caractères dans le champs de recherche:
édité leur exemple à fournir un peu plus de clarté
Variations sur le dessus de requête SQL, l'ajout d'OÙ consolidés (OÙ p.corps LIKE '%ce que%vous%want"), etc. sera probablement que vous obtenez exactement ce dont vous avez besoin.
2. Vous pouvez modifier votre schéma de base de données à l'appui de l'ensemble du texte. Souvent, ce qui est fait pour garder le MyISAM l'intégrité référentielle, l'ACIDE de la conformité, et de la vitesse sans avoir à installer des plugins comme Sphinx Fulltext Moteur De Recherche pour MySQL est de diviser les devis de données dans une table. Fondamentalement, vous avez une table des Citations qui est une table MyISAM, qui, plutôt que d'avoir votre champ de TEXTE "données", vous disposez d'une référence "quote_data_id", qui désigne l'ID sur un Quote_Data table est une table MyISAM. Vous pouvez faire votre fulltext sur la table MyISAM, rejoindre l'Id retourné avec vos tables MyISAM et voila vous avez vos résultats.
3. Installer Sphinx. Bonne chance avec celui-ci.
Compte tenu de ce que vous avez décrit, je TRÈS vous recommande de prendre la 1ère approche que j'ai présenté puisque vous disposez d'une simple base de données du site. La 1ère solution est simple, que le travail soit fait rapidement. Lucene sera une chienne à l'installation, surtout si vous souhaitez l'intégrer à la base de données comme Lucene est principalement conçu pour les fichiers d'index a pas de bases de données. Google personnalisé site de recherche tout à fait de votre site perdre des tonnes de réputation (vous fait paraître amateur et piraté), et fulltext MySQL sera plus susceptible de vous amener à modifier votre schéma de base de données.
Utilisation Google Personnalisé De Recherche Du Site. J'ai entendu dire qu'ils savent une chose ou deux au sujet de la recherche.
Stackoverflow les plans d'utilisation la Lucene moteur de recherche. Il y a un PHP port de cet écrit pour le Zend Framework, mais peut être téléchargé comme une entité distincte, sans avoir besoin de tous les ZF ballonnement. Ceci est appelé Zend_Search_Lucene, la documentation pour ce qui peut être trouvé ici.
Votre sql pour ce qui ressemblera à quelque chose comme ceci (où vous êtes en essayant de trouver des citations avec "la turquie"):
À partir de là, vous pouvez décider quoi faire avec tout ce qu'elle crache à vous.
Veiller à bien gérer les cas où un utilisateur malveillant pourrait injecter du SQL malveillant dans votre base de données, surtout si vous avez l'intention de la diffuser sur le web. Si vous faites cela pour le plaisir, si, je suppose que c'est à peu près ce que vous voulez apprendre.
Si vous êtes nouveau à des bases de données et sql, je recommande sqlite sur la base. Beaucoup plus facile à mettre en place et de travailler avec, comme dans aucun jeu. Il va contourner le potentiel des maux de tête d'avoir à installer et configurer mysql pour la première fois.
J'irais avec Recherche en Texte Intégral, regardez ici: http://hockinson.com/fulltext-search-of-mysql-database-table.html
Si vous souhaitez écrire votre propre, jetez un oeil à phpBB de mise en œuvre. Ils ont deux tableaux, le premier est une unique liste de tous les mots qui apparaissent dans les entrées, et le second est un plusieurs-à-plusieurs de référence entre les mots et les entrées. Vous pouvez ensuite faire un groupe et de compter pour trier les entrées de la manière que vous recherchez.
C'est beaucoup plus de travail que la mise en œuvre d'un tiers d'un moteur de recherche (ou de la recherche plein texte), mais cela ne vous permettra plus de contrôle sur les résultats.
Comme une alternative à Sphinx et Lucene, relativement simple moteur de recherche peut être créé à l'aide de la Xapian de la bibliothèque.
+
Prend en charge de nombreuses fonctionnalités de recherche avancée (tels que la pertinence du classement)+
Rapide-
Vous devez apprendre l'API pour créer votre interface-
Nécessite une extension php pour être installéNote également que Xapian stocke ses données dans un index séparé pour mysql.
Vous pourriez également être intéressé par Fourrage qui est un wrapper pour Solr, Xapian et Lucene.
La Xapian personnes ont également créé l'Oméga moteur de recherche qui est un frontend pour Xapian, et peut être appelé via le cgi.
Personnalisée Google Site Search est grande, si vous ne demande pas beaucoup (je pense que vous avez 1k requêtes/jour) ou si vous êtes prêt à payer.
De recherche fulltext de MySQL est aussi une excellente ressource (comme il a été mentionné précédemment).
Yahoo BOSS est un projet très intéressant -- je vais vous donner un coup de feu lors de mon prochain projet de recherche.
Et, enfin, Lucene est une excellente ressource si vous avez besoin de plus de puissance que fulltext, mais souhaitez personnaliser votre propre moteur de recherche. http://lucene.apache.org
Je suis tombé sur le Zoom Moteur De Recherche il y a quelques jours et pense que cela pourrait être le plus simple moteur de recherche, je n'ai jamais utilisé.
Windows outil crée une base de données du site, puis il vous demande également quel langage (PHP, ASP.NET, JavaScript, etc), vous souhaitez utiliser. J'ai choisi de PHP et il a construit le code PHP pour moi. Tous, j'ai eu à faire a été de transférer les fichiers sur le serveur et éventuellement personnaliser le modèle et la recherche de site travail.
Cela est gratuit pour les petits sites, et le seul con je trouve, c'est que l'araignée de l'outil (base de données constructeur) doit être exécuté sur Windows.