我有一个名称数据库。它具有全文索引。
ft_min_word_len设置为4。我正在分片托管,因此无法更改。
有时候查询中的单词可能少于4个字符。
例如,如果表中有本·史密斯(Ben Smith)和约翰·史密斯(John Smith)的行,则对MATCH(name) AGAINST('Ben Smith')
的查询将返回两行,且分数相等,因为忽略了“本”(Ben),且少于4个字符。
我需要本·史密斯以最高分返回。我认为在完全匹配的情况下进行额外的搜索会以某种方式欺骗得分值会有所帮助,但是我对如何实现这一点感到困惑。
答案 0 :(得分:0)
好吧,您可以使用全文本搜索来减少行数,并使用like
作为最终得分:
select ((name like '%Ben%') + (name like '%Smith%')) as my_score
from t
where MATCH(name) AGAINST('Ben Smith');