首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模糊化现有的ElasticSearch Java查询

问模糊化现有的ElasticSearch Java查询
EN

Stack Overflow用户
提问于 2016-03-09 14:37:39
回答 1查看 3.7K关注 0票数 1

我有一个现有的ElasticSearch查询,它使用Java:

代码语言:javascript
复制
BoolQueryBuilder queryBuilder = 
     boolQuery().should(queryStringQuery(theUsersQueryString)); 
SearchResponse response = client.prepareSearch(...).setQuery(queryBuilder);

现在我想要添加模糊性到此,以允许轻微的拼写错误仍然返回一些东西给用户。我的猜测是,向QueryBuilders对象添加模糊参数将是有成效的:

代码语言:javascript
复制
boolQuery().should(queryStringQuery(theUsersQueryString)
              .fuzziness(Fuzziness.ONE)
              .fuzzyMaxExpansions(4)
              .fuzzyPrefixLength(2));

不幸的是,这似乎不起作用,到目前为止,我还没有找到这方面的良好文档。例如,我的数据库中有字符串John Deere。如果使用查询字符串deere,则会得到匹配,但如果使用查询字符串Deeree或Deeer,则不会得到匹配。

我的问题是:我应该如何正确地模糊我的疑问?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 10:51:55

我选择创建一个新的查询,而不是修改现有的查询。

代码语言:javascript
复制
MultiMatchQueryBuilder fuzzyMmQueryBuilder = multiMatchQuery(
                theUsersQueryString, "field1", "field2", ... , "fieldn").fuzziness("AUTO");
BoolQueryBuilder b = boolQuery().should(fuzzyMmQueryBuilder); 
SearchRequestBuilder srb = client.prepareSearch(...).setQuery(b)... 
SearchResponse res = srb.execute().actionGet();

此查询显示出模糊行为。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35894575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档