到目前为止,我没有从全文查询中获得有意义的结果,因此我决定举一个简单的例子来说明我要做的事情以及我期望的结果。
我已经为列[Car]和主键[CarID]启用了全文启用了以下测试表(tblCars)。
CarID Car ----- ----------------- 9 BMW 330Ci 2009 14 AUDI A4 2010 16 AUDI A3 2.0T 2009
我想对“audi OR bmw”这两个词进行排名搜索,我期望在所有搜索结果中获得相同的排名。
SELECT tblCars.*, [RANK] AS Ranked FROM viewCarSearch INNER JOIN (SELECT [KEY] AS CarID, [RANK] AS Ranked FROM CONTAINSTABLE (tblCars, Car, @SearchOr)) tblSearch ON tblCars.CarID = tblSearch.CarID
相反,我得到了这个:
CarID Car Ranked ----- ------------------ ------- 9 BMW 330Ci 2009 48 14 AUDI A4 2010 32 16 AUDI A3 2.0T 2009 32
事实上,无论我做什么组合OR,宝马总是排名高于或等于奥迪,即使它看起来完全不合逻辑。我已经尝试在我的搜索词中使用了一些AND,但它仍然给出了奇怪的结果,宝马总是表现出比预期更好的效果。
任何人都可以指出我出错的地方......我认为我的期望一定是错的,但我无法想象我会如何为一张大桌子取得好成绩。
答案 0 :(得分:1)
好的,说真的,计算返回的RANK有很多因素,这是1到1000之间的无单位数。全文主要使用Jaccard Index来计算排名。考虑的其他因素包括文件长度(其他因素相同,较短的文件排名高于较长的文件)以及文件中搜索词/短语的出现次数。
我最好的解释你的结果,我强调这只是一个有根据的猜测,是: