mysql 能不能对中文分词检索? 要对 item 条目表下的 detail 字段检索,like 不能满足需求。。有什么方法能最快解决这问题?
能不用 sphinx、els 之类的最好
1
yangguoshuai 2017-06-20 20:47:55 +08:00
先分词,然后编码(比如类似 base64 替换几个字符) 然后全文搜索。。
|
2
zjsxwc OP 看了下 PostgreSQL 原生支持全文检索,我准备把这个表同步到 PostgreSQL 上来检索。。
https://www.opsdash.com/blog/postgres-full-text-search-golang.html |
3
mringg 2017-06-20 21:06:55 +08:00 via iPhone
可以原生中文分词
ngram |
4
mringg 2017-06-20 21:07:54 +08:00 via iPhone
很笨拙的算法,但很有用
|
5
zwh8800 2017-06-20 21:11:17 +08:00
用专业的工具做专业的事,分词搜索还是用 es 吧
|
9
wdlth 2017-06-20 23:31:09 +08:00
我们是用 Solr 和 ES 来做的,这些更专业,也更好扩展。
|
11
aqqwiyth 2017-06-20 23:45:34 +08:00
全转成拼音。。。走 fulltext index 逃:)
|
12
PythonAnswer 2017-06-21 02:57:14 +08:00 via Android
pg 能满足个人需求吗?以前折腾过 es 感觉还是麻烦了
|
13
zjsxwc OP 原来 mysql 本身就支持中文分词与全文搜索,我就不折腾了。
https://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html |
14
dangyuluo 2017-06-21 06:25:30 +08:00
上 ES,免费的没看到有更简单的方案的了。
|
16
reus 2017-06-21 09:26:30 +08:00
用 pg_trgm 扩展,建 gist 或者 gin 索引也差不多了
|
17
reus 2017-06-21 09:28:00 +08:00
没看到是中文,那不能用 pg_trgm
|
18
KalaSearch 2020-09-05 15:50:47 +08:00
MySQL 和 PG 本身都支持全文索引和分词,分词的方式有直接切 ngram (N 可选,索引会大 N 倍)或者用一些分词的插件。但问题是 MySQL 和 PG 都不是设计用来做搜索的,因此非要强用会比较拧巴。
而 ES 有不少分词用的插件,比较各种分词的效果(索引分词效果和搜索分词效果)会需要比较多的上下文知识。通常 Analyzer 和 Query analyzer 必须用同样的分词器,但也会造成有的时候某个词就是搜不出来的情况。 预算允许的话,自荐下我们做的卡拉搜索,啥也不用配置,接上 API 瞬间开搜。速度在我们的 benchmark 上比优化过的 ES 还快 10 倍左右 |