2009-11-07 6 views
0

Salut je l'ai 2 suivantes 2 requêtes:Odd Texte intégral Résultat de la recherche

SELECT FT_TBL.JobId, FT_TBL.Title, FT_TBL.[Description], 
    FT_TBL.Location, KEY_TBL.RANK FROM Jobs AS FT_TBL 
INNER JOIN FREETEXTTABLE (Jobs, (Title, [Description], Location), 
    'asp.net software') 
    AS KEY_TBL on FT_TBL.JobId = KEY_TBL.[KEY] 
WHERE CONTAINS (Location, '"luton*"') 
order by KEY_TBL.RANK desc; 

et

SELECT FT_TBL.JobId, FT_TBL.Title, FT_TBL.[Description], 
    FT_TBL.Location, KEY_TBL.RANK FROM Jobs AS FT_TBL 
INNER JOIN FREETEXTTABLE (Jobs, (Title, [Description], Location), 
    'asp.net software', 100) 
    AS KEY_TBL on FT_TBL.JobId = KEY_TBL.[KEY] 
WHERE CONTAINS (Location, '"luton*"') 
order by KEY_TBL.RANK desc; 

La seule différence est le second est un paramètre TOP_N_BY_RANK réglé sur 100, les premiers on revient 1000+ résultats, je pensais que le second reviendrait 100, mais il renvoie 0 résultats, pourquoi est-ce? Comment devrais-je changer le paramètre top_n_by_rank pour m'assurer que je n'obtiens que les meilleurs résultats?

+0

Les entrées qui sont retournées dans la première requête ont-elles un rang> 0? – sisve

Répondre

0

Les 100 premiers résultats ne correspondent probablement pas "luton*, et sont filtrés par votre clause WHERE.

+0

Ils sont ce qu'ils font :(la moitié de tous les champs de localisation contiennent luton dans ma table, le reste contient londres – David

+0

J'ai réalisé que le paramètre top_n_by_rank ajoute simplement une logique algorithmique supplémentaire au résultat de retour pour filtrer seulement le meilleur des meilleurs résultats en fonction le nombre spécifié, donc je l'ai laissé, simplement ordonné par le rang descendant et sélectionné le top 150 maximum de mes résultats pour éviter les contraintes sur les ressources. – David

Questions connexes