2009-11-07 130 views
0

您好我有2个以下2个查询:奇全文搜索结果

​​

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; 

唯一的区别是第二个有一个TOP_N_BY_RANK参数设置为100,第一个返回1000+的结果,我以为第二个会返回100,但它返回0结果,这是为什么?我应该如何改变top_n_by_rank参数以确保我只得到最好的结果?

+0

在第一个查询中返回的那些条目是否具有Rank> 0? – sisve

回答

0

前100个结果可能与"luton*不匹配,并被您的WHERE子句过滤掉。

+0

他们的事情是他们做的:(所有位置字段中的一半在我的表中包含luton,其余的包含伦敦 – David

+0

我意识到top_n_by_rank参数只是将进一步的算法逻辑添加到返回结果中,以仅筛选最佳匹配指定的数量,因此我将其排除,只需按排名降序排列,并选择我的结果的前150个最大值,以防止资源紧张。 – David