我想使用elasticSearch搜索术语(GoogleEarth或googleearch)。
现在,如果我试图搜索“Google”查询,没有NGram或EdgeNGram,我无法获得任何结果。
我不想使用nGram,因为他们得到了很多结果。所以现在我只使用Bool Query + multimatchquery。在这种情况下,我无法通过部分词汇获得结果。 我希望我可以搜索'Google地球'或'Google'或'地球'来获取GoogleEarth。我怎样才能得到这个?
Elasticsearch搜索查询选择
现在我只是使用查询'谷歌地球'来得到正确的结果。我想搜索条款,如果他们包括在内。
.setQuery(QueryBuilders.boolQuery().should(QueryBuilders.multiMatchQuery(query,
'title','name','tag')))
更新
我试图基于精确匹配搜索字词。如果我搜索“谷歌”,我想要'谷歌''googleearth'等。我知道如果我使用edgeNGram或nGram,我可能会得到较少的相关结果。所以如果可能的话,我不想使用nGram或edgeNGram。 你有什么想法吗?
的
camelcase tokenizer
部分谢谢您的答复。我试图根据完全匹配搜索条件。如果我搜索'谷歌',我可以'谷歌'谷歌'等'。我知道如果我使用edgeNGram,我可以得到这样的结果。但我也应该得到较少的相关条款。你有什么主意吗? – Soo我不明白你的问题。我建议你更新你的问题,并提供许多确切的查询例子和你期望匹配的源文本。还扩大你的意思是“不太相关的条款”。 – nickdos
我只是说我可能会得到很多nGram相关的结果。如果我查询'谷歌',我可能会'googa','goooo'。 – Soo