跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于 mysql 全文检索的分词和 wildcard
未分類
14 5 月 2020

关于 mysql 全文检索的分词和 wildcard

关于 mysql 全文检索的分词和 wildcard

資深大佬 : xianyu0 52

需求是这样的,搜索关键字有可能是词组,期望搜索出来的结果包含整个词组(即不分词),但可以带后缀通配符。

比如:搜索 hello world
期望结果包括:
hello world
hello worlds
不包括:
hello xxx world

mysql 的全文检索通过 double quote 阻止分词,但是在 double quote 里无法使用 wildcard,
比如 match(c) against(‘”hello world*”‘ in boolean mode) 的搜索结果并不包含 hello worlds。

这个貌似是 mysql 的 bug,搜到这个 issue: https://bugs.mysql.com/bug.php?id=80723

不知是否有办法绕过(暂不考虑 elasticsearch……

大佬有話說 (6)

  • 資深大佬 : simapple

    也算不上 bug, 你搜索 helloworld* 就好了,不要留出空格

  • 資深大佬 : reidxx

    主用 mysql 的全文索引怎么处理中文问题的?

  • 資深大佬 : wangyzj

    我觉得你要用 mysql fulltext 就别太纠结他的分词把
    或者自己挂一个分词插件

  • 主 資深大佬 : xianyu0

    @simapple
    搜 helloworld* 得不到 `hello world’ 这样的结果吧

    @reidxx
    我搜索的内容全是英文的,mysql5.6+之后不是引入了 ngram 了吗?已经支持中文分词了吧,不过貌似是比较简单的分词

  • 資深大佬 : klaudy

    mysql 正则表达式

  • 資深大佬 : simapple

    @xianyu0 哦 没看清问题,我试了一下 match(content) against(‘”hello world”‘ in boolean mode) 这样搜,可以匹配到 hello world 和 hello worlds

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具