我有一个全文索引的表,我使用FREETEXT
. 该表是从其他具有恒定数据的表中填充的,很少更改。现在有几百万行。
表结构:
ID (identity), PK
Text (varchar), FT IX
ForeignID (int) -- of the original ID in it's original table
我对结果不满意,因为有时一个单词重复了太多次,因此该行被引擎排名靠前。示例:“ Gas Station Young, Young street, Some State ”比“ Young street ”搜索“ young ”要高。对表进行排名就足够了(除了 FTS 索引已经做的事情之外,不需要对表内的行进行排名)。
我想添加一个简单的自定义排名机制。
我尝试CustomRank
在查询之前添加一列按 while/ 排序,FREETEXT
但这需要太长时间。执行计划说排序依据CustomRank
是链条中最薄弱的环节。
我想过:
- 管理另一个字段,因此我将有一个用于显示(
DisplayText
)和一个用于查询/索引(IndexText
),并通过重复我想要提升的行的单词和短语来操作查询/索引。 - 将其拆分为表格并在代码中进行处理。每张桌子都会有自己的排名。
有任何想法吗?谢谢,旺格。