2010-03-16 8 views
1

Je travaille sur une fonction de recherche pour mon application, je veux rechercher tous les articles dans la base de données. A partir de maintenant, j'utilise un LIKE dans mes requêtes, mais je veux ajouter une fonctionnalité "Related Articles", un peu comme ce que SO a dans la barre latérale (que je vois comme un problème si j'utilise Like).MySQL .. recherche en utilisant Fulltext ou en utilisant Like? Qu'est-ce qui est mieux?

Quoi de mieux à utiliser pour la recherche MySQL, Fulltext ou Like ... ou toute autre chose que je ne connais pas?

En outre, j'utilise Kohana Framework, donc si quelqu'un connaît un moyen facile de faire la correspondance de texte intégral en utilisant le constructeur de requête, j'apprécierais cela.

Merci.

Répondre

2

Tout d'abord, vous devez considérer que:

  • MySQL FULLTEXT indexes ne sont que pour les tables de possibles MyISAM - pas pour les tables dans InnoDB
    • Et seulement InnoDB prend en charge les clés étrangères, les transactions,.
  • L'utilisation de LIKE est généralement assez lente et mauvaise pour les performances, car cela signifie généralement effectuer un balayage complet de la ta ble pour chaque recherche.

Je voudrais vraiment pas utiliser l'une de ces deux solutions pour tout type d'application grand/réel/importante ...


Au lieu de ces deux possibilités, avez-vous pensé à utiliser une indexation réelle fulltext/moteur de recherche ?

Par exemple, vous pouvez jeter un oeil à:

Remarque il y a une mise en œuvre de Lucene qui ne nécessite que PHP Zend Framework: Zend_Search_Lucene - peut être utile si vous ne pouvez installer aucun logiciel supplémentaire sur votre serveur.