模糊现有 ElasticSearch Java API 查询

Fuzzify existing ElasticSearch Java API query

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

BoolQueryBuilder queryBuilder = 
     boolQuery().should(queryStringQuery(theUsersQueryString)); 
SearchResponse response = client.prepareSearch(...).setQuery(queryBuilder);

现在我想添加模糊性,以允许较小的拼写错误仍然return给用户一些东西。我的猜测是向 QueryBuilders 对象添加模糊参数会很有成效:

boolQuery().should(queryStringQuery(theUsersQueryString)
              .fuzziness(Fuzziness.ONE)
              .fuzzyMaxExpansions(4)
              .fuzzyPrefixLength(2));

不幸的是,这似乎行不通,而且到目前为止我还找不到很好的文档。例如,我的数据库中有字符串 John Deere。如果我使用查询字符串 deere 我会得到一个匹配项,但如果我使用查询字符串 DeereeDeeer.

则不会

我的问题是:我应该如何正确模糊我的查询?

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

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();

此查询表现出模糊行为。