0
我有一個使用Java API的現有ElasticSearch查詢:模糊化現有ElasticSearch的Java API查詢
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
,則不會。
我的問題是:我應該如何正確模糊我的查詢?
你是否[通過此](https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#fuzziness)? – Val
@Val:是的,我希望我上面提出的代碼可以工作,因爲我已經嘗試了不同的參數值組合,但到目前爲止我一直無法得到模糊的結果,所以我認爲還有更多與它有關的Java API。 – Gruber
您還可以顯示一些示例數據,您輸入到'theUsersQueryString'的值以及您期望的結果嗎? – Val