【问题标题】:mysql fulltextsearch handling short wordsmysql全文搜索处理短词
【发布时间】: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

我想给确切的以下单词一个更高的相关性或计算相关性并进行一些排序,但不知道该怎么做?

阅读其他类似讨论的主题并没有真正帮助。

还有其他想法吗?

谢谢你

【问题讨论】:

    标签: mysql full-text-search


    【解决方案1】:

    全文搜索应该是模糊的。我想你也许可以 通过使用布尔模式和查询字符串(如 '+iphone apple 5*',但是您可能会明白为什么它可能不是很灵活。

    根据您的要求,我不确定是否要特别关注 你要回什么话。接受你会得到一些不相关的结果 并更多地考虑哪些词是重要的。

    -编辑-

    除了+,您还可以使用<> 控制布尔搜索以增加或 降低单词的相关性。我在玩耍时得到的结果通常包括 所有 iphone,包括 4s,但没有其他任何东西。

    除了最小长度之外,您是否检查过停用词?尝试使用> 增加或减少数字的相关性,看看是否会改变相关性 你得到你的查询。如果没有,那就有问题了。

    -再次编辑-

    其实 '+iphone apple -4' 和 '+iphone apple +5*' 都适用于我,忘记重启了 mysql。我意识到这使它变得不灵活,但我看不出你怎么能得到你想要的 控制水平而不是僵化。

    【讨论】:

    • 谢谢,我在上面编辑了我的问题。但是在您的示例中,您更改了搜索字符串。使用同一个你不会在结果中得到 iphone 5S
    • 所以你似乎对iphone这个词比对苹果更感兴趣,这就是我把+放在那里的原因。 5有点棘手,因为它出现在MTB5中......并且在5s中并不孤单,所以我不知道如何处理。
    • 你是对的,但问题是,我怎么知道哪个词更重要?我在谷歌上搜索其他公司如何处理这个问题,但遗憾的是我没有得到任何可用的结果。
    • 在这种情况下,您似乎知道,因为您可以告诉我哪些结果应该显示在查询中。但是,一般来说,没有自动方法可以准确地确定与您的搜索相关的内容。这就是为什么我建议您对一些误报感到满意,并稍微考虑一下您通常想要对这个查询做什么并尝试为此进行优化。
    • 问题是过滤掉结果,也许连接词的排名比其他词高,但此刻我被困住了
    猜你喜欢
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多