2008-12-09 7 views
2

Comment mettre en œuvre une grande recherche dans un mysqldb - dans une table si je cherche avec '... LIke% bla% ....' toutes les entrées ne seraient pas trouvées - si bla dans un mot par exemple. une recherche avec soundex serait génial - mais si je lis le manuel i doit créer un soundex-index pour rechercher des soundex valeurs?Rechercher dans un mysqldb avec php

La question Quelle est la « meilleure pratique » pour écrire un bon db-recherche vor un mot-clé dans une colonne simple « titre » ou someting autre.

bye

Répondre

2

Pour la recherche de texte que vous avez deux options en plus d'utiliser une clause LIKE - indice FULLTEXT (ce qui signifie en utilisant MyISAM) ou en utilisant les moteurs d'indexation spécifiques tels que Lucene ou Sphinx.

Personnellement, je vous recommande d'utiliser Sphinx, il a une excellente intégration à la fois MySQL et PHP et est très rapide pour la recherche de texte (et d'autres questions aussi bien).

2

Si vous n'êtes pas à installer et d'utiliser Sphinx, vous pouvez essayer d'utiliser certains de MySQL est construit en texte intégral fonctions de recherche comme « MATCH »

Cela vous permet de faire une recherche en texte intégral et se classe même les résultats avec un score de pertinence. Vous pouvez écrire des requêtes:

SELECT id, col1, col2, MATCH(col1, col2) AGAINST('some text' IN NATURAL LANGUAGE MODE) AS relevance FROM table1; 

Vous pouvez même utiliser l'expansion de requête pour revenir sur d'autres termes étroitement liés. Par exemple, si l'utilisateur recherche pour « base de données » et les premiers résultats les plus pertinents contiennent « mysql », le mysql recherche pour « mysql », car il a déterminé que les « mysql » terme est étroitement liée à la « base de données » terme recherché par l'utilisateur.

http://dev.mysql.com/doc/refman/5.1/en/fulltext-query-expansion.html

Questions connexes