elasticsearch 弹性搜索突出显示整个单词,而不是单词的一部分,elasticsearch,autocomplete,elasticsearch,Autocomplete" /> elasticsearch 弹性搜索突出显示整个单词,而不是单词的一部分,elasticsearch,autocomplete,elasticsearch,Autocomplete" />

elasticsearch 弹性搜索突出显示整个单词,而不是单词的一部分

elasticsearch 弹性搜索突出显示整个单词,而不是单词的一部分,elasticsearch,autocomplete,elasticsearch,Autocomplete,如果查询是Brid我想在突出显示的字段中获取Bridgitte,而不是整个单词Bridgitte 我的索引如下所示(我已经按照这里的建议添加了ngram分析器) } 这是嵌入的Elasticsearch实例,不确定是否相关 我的问题是这样的 MatchQueryBuilder queryBuilder = matchPhrasePrefixQuery("_all", query).maxExpansions(50); final SearchResponse response = cli

如果查询是
Brid
我想在突出显示的字段中获取
Bridgitte
,而不是整个单词
Bridgitte

我的索引如下所示(我已经按照这里的建议添加了ngram分析器)

}

这是嵌入的Elasticsearch实例,不确定是否相关

我的问题是这样的

    MatchQueryBuilder queryBuilder = matchPhrasePrefixQuery("_all", query).maxExpansions(50);
final SearchResponse response = client.prepareSearch("myindex")
    .setQuery(queryBuilder)
    .addHighlightedField("mystringproperty3", 0, 0)
    .addHighlightedField("mystringproperty4", 0, 0)
    .addHighlightedField("myarrayproperty.mystringproperty1", 0, 0)
    .setHighlighterRequireFieldMatch(false)
    .execute().actionGet();

但它不起作用。我尝试将查询更改为queryStringQuery,但它似乎不支持按单词的一部分进行搜索。有什么建议吗?

不可能。弹性搜索对单词进行索引。从标记化的角度来看,您不能在这里做很多事情

您可能需要在搜索结果上编写包装器。(非弹性搜索特定)

    MatchQueryBuilder queryBuilder = matchPhrasePrefixQuery("_all", query).maxExpansions(50);
final SearchResponse response = client.prepareSearch("myindex")
    .setQuery(queryBuilder)
    .addHighlightedField("mystringproperty3", 0, 0)
    .addHighlightedField("mystringproperty4", 0, 0)
    .addHighlightedField("myarrayproperty.mystringproperty1", 0, 0)
    .setHighlighterRequireFieldMatch(false)
    .execute().actionGet();