我正在实现mysql全文搜索,这里我面临一个问题,结果显示但不能正常工作。当我搜索“三星Galaxy S6”时,它正处于第二位置。我需要冠军比其他领域更重要。
如果找到标题中的搜索字符串,它将首先出现,当我仅使用“S6”结果执行时还有一件事是奇怪的0结果显示,我应该怎么做。请帮忙。
答案 0 :(得分:0)
如果在标题中找到搜索词,我无法提供结果权重的答案。我可以提供为什么只搜索" S6"返回0结果,这是一个MySQL限制,默认情况下它的最小字长为4个字符,这可以在my.ini中更改,查找ft_min_word_len
(反向ft_max_word_len
)。
这假设您当然正在使用MATCH()
。
答案 1 :(得分:0)
为了对字段文本和标题应用不同的权重,您必须在每列上创建单独的索引。然后使用具有权重因子的两个索引。
select *
from mytable
where match(title) against 'word'
or match(text) against 'word'
order by
2 * match(title) against 'word'
+ match(text) against 'word'
desc
选择合适的称重系数(2可能是好的)。