mysql 能不能对中文分词检索?

2017-06-20 20:34:58 +08:00
 zjsxwc

mysql 能不能对中文分词检索? 要对 item 条目表下的 detail 字段检索,like 不能满足需求。。有什么方法能最快解决这问题?

能不用 sphinx、els 之类的最好

6416 次点击
所在节点    程序员
18 条回复
yangguoshuai
2017-06-20 20:47:55 +08:00
先分词,然后编码(比如类似 base64 替换几个字符) 然后全文搜索。。
zjsxwc
2017-06-20 21:04:47 +08:00
看了下 PostgreSQL 原生支持全文检索,我准备把这个表同步到 PostgreSQL 上来检索。。

https://www.opsdash.com/blog/postgres-full-text-search-golang.html
mringg
2017-06-20 21:06:55 +08:00
可以原生中文分词
ngram
mringg
2017-06-20 21:07:54 +08:00
很笨拙的算法,但很有用
zwh8800
2017-06-20 21:11:17 +08:00
用专业的工具做专业的事,分词搜索还是用 es 吧
zjsxwc
2017-06-20 21:49:35 +08:00
@zwh8800

尝试了下 es 的 5 分钟教程,蛮简单的,es 有什么中文分词推荐的?
leopku
2017-06-20 23:03:41 +08:00
@zjsxwc IK

mmseg 在某些场景表现也不错

根据你的场景多测试总结
Hieast
2017-06-20 23:27:19 +08:00
@zjsxwc 一开始 smartcn 吧
wdlth
2017-06-20 23:31:09 +08:00
我们是用 Solr 和 ES 来做的,这些更专业,也更好扩展。
TangMonk
2017-06-20 23:43:41 +08:00
@zjsxwc pg 要下插件才支持中文检索
aqqwiyth
2017-06-20 23:45:34 +08:00
全转成拼音。。。走 fulltext index 逃:)
PythonAnswer
2017-06-21 02:57:14 +08:00
pg 能满足个人需求吗?以前折腾过 es 感觉还是麻烦了
zjsxwc
2017-06-21 06:20:26 +08:00
原来 mysql 本身就支持中文分词与全文搜索,我就不折腾了。

https://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html
dangyuluo
2017-06-21 06:25:30 +08:00
上 ES,免费的没看到有更简单的方案的了。
cstj0505
2017-06-21 08:56:35 +08:00
@zjsxwc 是的,postgrsql 配合结巴分词非常好用。

再弄一个自己家的分词词库,美滋滋,不比任何人的差
reus
2017-06-21 09:26:30 +08:00
用 pg_trgm 扩展,建 gist 或者 gin 索引也差不多了
reus
2017-06-21 09:28:00 +08:00
没看到是中文,那不能用 pg_trgm
KalaSearch
2020-09-05 15:50:47 +08:00
MySQL 和 PG 本身都支持全文索引和分词,分词的方式有直接切 ngram (N 可选,索引会大 N 倍)或者用一些分词的插件。但问题是 MySQL 和 PG 都不是设计用来做搜索的,因此非要强用会比较拧巴。

而 ES 有不少分词用的插件,比较各种分词的效果(索引分词效果和搜索分词效果)会需要比较多的上下文知识。通常 Analyzer 和 Query analyzer 必须用同样的分词器,但也会造成有的时候某个词就是搜不出来的情况。

预算允许的话,自荐下我们做的卡拉搜索,啥也不用配置,接上 API 瞬间开搜。速度在我们的 benchmark 上比优化过的 ES 还快 10 倍左右

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369902

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX