Question

J'ai une table de base de données qui est plein texte indexé et j'utilise la fonction CONTIENT pour effectuer une recherche de requête sur elle.

Quand je fais:

SELECT * FROM Plants WHERE CONTAINS(Plants.Description, '"Plant*" AND "one*"');

Je reviens tous les résultats corrects correspondant à une description avec les mots « usine » et « un ».

Certaines plantes sont nommées comme "usine 1", "Plant 2", etc., ce qui est le problème.

Quand je fais cela, je reçois aucun résultat:

SELECT * FROM Plants WHERE CONTAINS(Plants.Description, '"Plant*" AND "1*"');

Quelqu'un sait pourquoi?

Était-ce utile?

La solution

Il y a une liste de mots couramment utilisés qui ne sont pas indexés dans une recherche par mot clé, tels que « et » et « le ».

Je crois que le texte « 1 » apparaît également dans cette liste. Par conséquent, il ne semble pas dans l'index, et ne peut être trouvé avec la clause CONTAINS.

Si je me souviens bien, il y a une interface d'administration pour vous permettre de modifier cette liste de mots. J'ai essayé de le modifier une fois, il y a quelques années, et je me souviens d'avoir du mal à faire la différence après que je l'ai fait.

Autres conseils

Daan est correct. vous avez besoin d'un autre * avant le 1. Placer les caractères génériques et d'autre d'un terme de recherche recherche la chaîne entière pour le terme de recherche quelle que soit sa position.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top