我试图弄清楚加权项在 SQL SERVER 的 ISABOUT 查询中是如何工作的。
这是我目前所在的位置:
每个查询返回以下行:
查询 1(权重 1): 初始排名
SELECT * FROM CONTAINSTABLE(documentParts, title, 'ISABOUT ("e" weight (1) ) ') ORDER BY RANK DESC, [KEY]
KEY RANK
306342 249
272619 156
221557 114
查询 2(权重 0.8): 排名增加,初始顺序保留
SELECT * FROM CONTAINSTABLE(documentParts, title, 'ISABOUT ("e" weight (0.8) ) ') ORDER BY RANK DESC, [KEY]
KEY RANK
306342 321
272619 201
221557 146
查询 3(权重 0.2): 排名增加,初始顺序保留
SELECT * FROM CONTAINSTABLE(documentParts, title, 'ISABOUT ("e" weight (0.2) ) ') ORDER BY RANK DESC, [KEY]
KEY RANK
306342 998
272619 877
221557 692
查询 4(权重 0.17): 排名下降,最佳匹配现在排在最后,这些术语的反向行为从 0.17 开始
SELECT * FROM CONTAINSTABLE(documentParts, title, 'ISABOUT ("e" weight (0.17) ) ') ORDER BY RANK DESC, [KEY]
KEY RANK
272619 960
221557 958
306342 802
查询 5(权重 0.16): 排名上升,最佳匹配现在第二
SELECT * FROM CONTAINSTABLE(documentParts, title, 'ISABOUT ("e" weight (0.17) ) ') ORDER BY RANK DESC, [KEY]
KEY RANK
272619 978
306342 935
221557 841
查询 6(权重 0.01): 排名下降,最佳匹配再次垫底
SELECT * FROM CONTAINSTABLE(documentParts, title, 'ISABOUT ("e" weight (0.01) ) ') ORDER BY RANK DESC, [KEY]
KEY RANK
221557 105
272619 77
306342 50
权重 1 的最佳匹配排名为 249,当权重下降到 0.2 时,最佳匹配排名增加到 998。
从 0.2 到 0.17 排名下降,从 0.16 结果倒置(重现此行为的权重值取决于术语,也可能取决于搜索的列...)
似乎在某个点上,“重量”的意思是相反的,比如“不包括这个术语”。
您对这种行为有什么解释吗?
为什么权重下降时排名会上升?
为什么排名会在某个点后下降,直到结果反转?您如何预测这一点?
当用户搜索创建以下查询的内容时,我使用自定义“断词器”:
CONTAINSTABLE(documentParts, title,
'ISABOUT (
"wordA wordB wordC" weight (0.8),
"wordA*" NEAR "wordB*" NEAR "wordC*" weight (0.6),
"wordA*" weight (0.1),
"wordB*" weight (0.1),
"wordC*" weight (0.1),
) ')
我是否期望 0.1 个字能获得更高的排名?
以下查询与上面的查询相同吗?我是否会期望 0.1 的排名出现一些奇怪的行为?
CONTAINSTABLE(documentParts, title, '
ISABOUT ( "wordA wordB wordC" weight (0.8) ),
OR ISABOUT ( "wordA*" NEAR "wordB*" NEAR "wordC*" weight (0.6) ),
OR ISABOUT ( "wordA*" weight (0.1) ),
OR ISABOUT ( "wordB*" weight (0.1) ),
OR ISABOUT ( "wordC*" weight (0.1) ),
')