愚者求师之过,智者从师之长。

ik分词器搜索不出单词、数字等

Elasticsearch | 作者 xiangxiaolu | 发布于2018年12月12日 | 阅读数:7088

大家好,我对elasticsearch还不太了解,我按照网上的博客部署了elasticsearch的中文分词器,但是搜索效果不太好,很多字和词都没法搜索出来,请问你们都是怎么处理的呢?谢谢了
已邀请:

rochy - rochy_he

赞同来自:

如果你的字母和数字类似:china,187987668
而你想通过搜索 hi 搜到 china 或者  668 搜索到 187987668
那么你需要使用通配符搜索方式 Wildcard Query 进行搜索
 
可以参考官方文档:https://www.elastic.co/guide/e ... .html
 
推荐你使用 boolQuery 将 matchQuery 和 wildcardQuery 结合起来搜索,搜索结果应该可以满足你的预期

zz_hello

赞同来自:

有很多方面的情况,词库的问题,mapping设置的问题,分词的问题,你要把你的示例说一下才能解决你的问题。。。
如果存储的是单个的词,完全可以用keyword类型,用term查询

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

1词搜索不到的原因:词典不能涵盖全部词,
2搜索词的position和文章position不一致导致短语匹配检索不到,
解决方案:
1动态索引和动态更新词典和别名结合使用,
2多种分词模式结合检索,举例:standard和ik结合检索

端小强 - 90后Java

赞同来自:

不知道你的需求是什么样的?可以具体描述下吗?
我最近做的功能里面要求多字段匹配,name和brand适用ik分词匹配,code字段适用ngram实现模糊搜索,查询时适用multi_match进行多字段匹配。具体怎么查询还是要根据你的场景。

要回复问题请先登录注册