2011-09-19 4 views
0

Je crée un moteur de recherche mysql fulltext pour mon site web, et j'ai une page de recherche avancée qui permet à l'utilisateur de limiter les colonnes dans lesquelles il souhaite chercher. Cependant, chaque fois que je crée un index de recherche fulltext, toutes les colonnes utilisées dans cet index doivent être utilisées, sinon je reçois un message d'erreur. Est-il possible de faire un index mysql pour fulltext où je peux utiliser seulement certaines des colonnes?Recherche plein texte MySQL avec différentes permutations

Par exemple, j'ai 5 colonnes dans mon index, faite par cette déclaration:

ALTER TABLE table1 ADD FULLTEXT fulltext_index(subject, course, prof, semester, 
year); 

Si je voulais chercher seulement sous sujet et bien sûr, je recevrais l'erreur:

#1191 - Can't find FULLTEXT index matching the column list 

Répondre

1

Vous avez juste besoin de créer plusieurs index pour chaque combinaison possible vous souhaitez rechercher:

table1 alter table ajouter du texte intégral fulltext_index2 (sous réserve, bien sûr);

alter table table1 Ajouter un document fulltext_index3 (cours, semestre, année);

Etc ... voir si cela résout le problème.

0

Non, un index fulltext vous oblige à utiliser toutes les colonnes. Si vous souhaitez n'utiliser que certains d'entre eux, vous aurez besoin d'un index de texte complet distinct pour chaque permutation. Je ne l'ai pas testé, mais vous pouvez le contourner en utilisant uniquement des colonnes dans l'ordre spécifié. par exemple. un index sur les colonnes (a, b, c) pourrait vous permettre de rechercher seulement (a, b) parce qu'elles sont listées en premier, mais pas (a, c) ou (b, c).