如何为Mysql全文搜索索引中的其他字段赋予更多权重

时间:2015-08-06 05:47:38

标签: mysql full-text-search

我正在实现mysql全文搜索,这里我面临一个问题,结果显示但不能正常工作。当我搜索“三星Galaxy S6”时,它正处于第二位置。我需要冠军比其他领域更重要。

如果找到标题中的搜索字符串,它将首先出现,当我仅使用“S6”结果执行时还有一件事是奇怪的0结果显示,我应该怎么做。请帮忙。

我的Sqlfiddle link

2 个答案:

答案 0 :(得分:0)

如果在标题中找到搜索词,我无法提供结果权重的答案。我可以提供为什么只搜索" S6"返回0结果,这是一个MySQL限制,默认情况下它的最小字长为4个字符,这可以在my.ini中更改,查找ft_min_word_len(反向ft_max_word_len )。

这假设您当然正在使用MATCH()

进一步阅读:MySQL Natural Language Full Text Search

答案 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可能是好的)。