我有一个使用 Java API 的现有 ElasticSearch 查询:
BoolQueryBuilder queryBuilder =
boolQuery().should(queryStringQuery(theUsersQueryString));
SearchResponse response = client.prepareSearch(...).setQuery(queryBuilder);
现在我想为此添加模糊性,以允许轻微的拼写错误仍然向用户返回一些内容。我的猜测是向QueryBuilders
对象添加模糊参数会很有成效:
boolQuery().should(queryStringQuery(theUsersQueryString)
.fuzziness(Fuzziness.ONE)
.fuzzyMaxExpansions(4)
.fuzzyPrefixLength(2));
不幸的是,这似乎不起作用,到目前为止我一直无法找到好的文档。例如,我的John Deere
数据库中有字符串。如果我使用查询字符串deere
,我会得到匹配,但如果我使用查询字符串Deeree
或Deeer
.
我的问题是:我应该如何正确地模糊我的查询?