ElasticSearch索引和搜索词匹配的一些细节

一个item“麦当劳”:被切词成“麦当 + 劳”
那么这个item的索引有2个term:“麦当”,“劳”
那么下面代码,
能召回这个item的代码:

//可以召回这个item

ArrayList<String> tokens = new ArrayList<String>();
tokens.add("麦当");
tokens.add("劳");

BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
for (String token : tokens) {
    boolQueryBuilder.must(new TermQueryBuilder(ITEM_NAME_FIELD, token));
}

能召回这个item的代码:

//可以召回这个item

ArrayList<String> tokens = new ArrayList<String>();
tokens.add("麦当");

BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
for (String token : tokens) {
    boolQueryBuilder.must(new TermQueryBuilder(ITEM_NAME_FIELD, token));
}

不能召回这个item的代码:

//不能召回这个item

ArrayList<String> tokens = new ArrayList<String>();
tokens.add("麦当");
tokens.add("肯德");
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
for (String token : tokens) {
    boolQueryBuilder.must(new TermQueryBuilder(ITEM_NAME_FIELD, token));
}

你可能感兴趣的:(搜索算法,elasticsearch,搜索引擎)