【发布时间】:2014-03-23 14:44:42
【问题描述】:
我现在使用 ft_min_word_len = 3 的 mysql 全文搜索。
这是查询:
SELECT * FROM (
SELECT title, MATCH(title) AGAINST('Apple Iphone 5') AS REL
FROM my_items
) AS items
WHERE REL > 0
ORDER BY REL
DESC LIMIT 3
表中我的测试项目:
apple iphone 4
apple MacBook MTB5543659
apple iphone 5
apple ipad
iphone 4
iphone 5S
当我搜索时"apple iphone 5" order by related Limit 4 我得到以下结果:
apple iphone 4
apple iphone 5
apple MacBook MTB5543659
apple ipad
当我将 ft_min_word_len 减少到 1 时,除了更大数据的性能问题之外,我还得到了用户不期望的结果:
apple iphone 5
apple iphone 4
apple MacBook MTB5543659
apple ipad
编辑
尝试过布尔模式。
MATCH(title) AGAINST('Apple Iphone 5*' IN BOOLEAN MODE) AS REL
结果是
apple iphone 5
apple iphone 4
apple MacBook MTB5543659
iphone 5S
与
MATCH(title) AGAINST('+Apple Iphone 5*' IN BOOLEAN MODE) AS REL
结果是
apple iphone 5
apple iphone 4
apple MacBook MTB5543659
apple ipad
那么我该怎么做才能得到如下结果:
apple iphone 5
iphone 5s
我想给确切的以下单词一个更高的相关性或计算相关性并进行一些排序,但不知道该怎么做?
阅读其他类似讨论的主题并没有真正帮助。
还有其他想法吗?
谢谢你
【问题讨论】: