用match against語句搜索多個中文字段多個關鍵詞並重建全文索引

字號+ 編輯: 种花家 修訂: 种花家 來源: 原创 2024-01-24 我要說兩句(0)

網上那些日記亂糟糟, 特修改一下。

举个例子: 需求是某数据表名称为some_table, 有四个字段f1、f2、f3、f4里面有中文内容要搜。

既然据说mysql 5.7之后已经内置的ngram中文搜索插件, 那么加入中文索引插件的全文索引的玩法是:

ALTER TABLE some_table ADD FULLTEXT INDEX 索引名(字段1,字段2,字段n) with parser ngram;

这里有2个语句来重建索引维护表, 以重建中文索引为例

ALTER TABLE some_table DROP INDEX 索引名;
ALTER TABLE some_table ADD FULLTEXT INDEX 索引名(字段1,字段2,字段n) with parser ngram;

这样一来,sql语句就可以这么写

SELECT xxx from some_table where match (字段1,字段2,字段n) against ('+必须出的关键词1 可选关键词2 -不许出的关键词3' in boolean mode) limit 0, 10;

MySQL报错 1191 - Can't find FULLTEXT index matching the column list, Time: XXXs

有的同学要问了: 为什么在建索引的时候一行要写那么多字段, 分开来写不行吗? 

可以改一下不对称的玩法试试, 马上就会发现上面的报错。

閲完此文,您的感想如何?
  • 有用

    1

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: PHP+JS聊天群

相關課文
  • 讓Mysql查詢後直接返回json字符串的方法

  • postgresql的pg_dump備份簡單方法

  • 使用sql語句在MySQL庫中去掉字段左邊、右邊指定字符串

  • 避免mysql全表掃描等影響性能的寫法槼則

我要說說
網上賓友點評