绊脚石乃是进身之阶。

使用ik分词器,找不到数据

Elasticsearch | 作者 Moo | 发布于2018年10月25日 | 阅读数:3320

QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("中国").analyzer("ik_max_word");
SearchResponse sr=srb.setQuery(queryBuilder).execute().actionGet();// 查询所有

我使用analyzer("ik_max_word")的时候,找不到数据,不加这句代码的时候,可以找到数据。我确认我的ik分词器是启动的,http://127.0.0.1:9200/aaa/_analyze,参数{"analyzer":"ik_max_word",
"text":"这是一个简单的故事"},结果{
"tokens": [
{
"token": "简单",
"start_offset": 4,
"end_offset": 6,
"type": "CN_WORD",
"position": 0
},
{
"token": "故事",
"start_offset": 7,
"end_offset": 9,
"type": "CN_WORD",
"position": 1
}
]
}
已邀请:

yayg2008

赞同来自:

应该是你mapping时使用的分词器跟你查询时使用的不一致。按你的描述,不加分词器时能找到数据,查询时不加,会使用mapping时指定的分词器。

God_lockin

赞同来自:

设置mapping的时候可以指定拿来存储用的分词器和拿来搜索用的分词器,丢query的时候不指定分词器能搜到可能是用的默认分词器了
 
就ik来说建议在建索引的时候用max word,search_analyzer用smart的方式

dsl

赞同来自:

什么原因导致的
 

tenlee

赞同来自:

给你推荐一个新的分词器。效果比IK好很多。
github 搜 elasticsearch-analysis-hao
用了都说好,哈哈

要回复问题请先登录注册