我想使用 elasticSearch 搜索字词(GoogleEarth 或 googleearch)。
现在,如果我尝试搜索查询“Google”,如果没有 NGram 或 EdgeNGram,我将无法获得任何结果。
我不想使用 nGram,因为他们得到了很多结果。所以现在我只使用 Bool Query + multimatchquery。在这种情况下,我无法通过部分单词获得结果。我希望我可以搜索“Google Earth”或“Google”或“Earth”来获得 GoogleEarth。我怎样才能得到这个?
现在我只使用查询“GoogleEarth”来获得正确的结果。我想搜索包含的字词。
.setQuery(QueryBuilders.boolQuery().should(QueryBuilders.multiMatchQuery(query,
'title','name','tag')))
更新
我尝试根据完全匹配搜索术语。如果我搜索“google”,我想得到“google***”“googleearth”等等。我知道如果我使用 edgeNGram 或 nGram,我可能会得到较少的相关结果。所以如果可能的话,我不想使用 nGram 或 edgeNGram。你有什么想法?