2009-12-09 24 views
4

J'ai une base de données dans SQL Server 2008 avec des index de recherche de texte intégral. J'ai défini le Stopword 'al' dans la Stoplist. Cependant, quand je recherche une phrase avec le mot-clé «al», le mot «al» est toujours uesd dans le classement.Recherche plein texte: Les mots de bruit sont recherchés

Cela peut être lié au fait que je suis en train de diviser les termes de recherche et de les reconstruire. Je suis ensuite à la recherche dans plusieurs domaines et le classement des résultats: http://pastebin.com/fdce11ff. Cela fonctionne pour briser une recherche

'al hamra' 

dans

("*al*" ~ "*hamra*") OR ("*al*" OR "*hamra*") 

pour la recherche de texte intégral.

Imaginez ce scénario:

Nom: Al Hamra, Auteur: Jack Brown, Genre: Fiction Al Karawan, Auteur: Al Hanz, Genre: Romance

maintenant une recherche de « al hamra ' renverra ' Al Karawan ', malgré le fait que ' al ' est dans la liste d'arrêt. Pourquoi est-ce? Je pensais que les listes d'attente feraient perdre des mots aux mots?

Répondre

1

Les mots parasites sont spécifiques aux pages de codes; l'avez-vous ajouté à la bonne? Vous pouvez utiliser sys.dm_fts_parser pour le tester (ci-dessous) cela pourrait également fonctionner mieux que votre mot manuel de rupture dans le code (ou non).

SELECT special_term, display_term 
FROM sys.dm_fts_parser 
    (' "al hamra" ', 1033, 0, 0) 

En supposant que vous utilisez la page de code 1033. Si votre mot de bruit est dans la page de code que vous attendez alors il devrait être visible en tant que noiseword dans la liste.

+0

La requête a montré que 'al' correspond exactement. J'ai découvert que le 'al' était dans l'arrêt anglais. J'ai donc effacé la liste d'arrêt, et j'ai rajouté 'al' au neutre. Cependant, maintenant il ne montre pas quand je cours http://pastebin.com/m6d9fc5f4. J'ai confirmé qu'il est présent, car je ne peux pas le rajouter (donne une erreur). La requête que vous avez mentionnée montre encore 'al' comme une correspondance exacte. –

+0

Oh, pour clarifier, mon catalogue répertorie tous les index de texte intégral dans 'Neutre'. –

+0

J'ai essayé de changer la langue des listes d'arrêt et de tous les index de texte intégral en anglais. La liste d'arrêt s'affiche maintenant en utilisant la requête http://pastebin.com/m6d9fc5f4, mais l'exécution de votre requête montre toujours 'al' comme une correspondance exacte :( –