2009-11-07 159 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