我希望能够使用弹性搜索查询从数据库中搜索单词的排列组合。 例如:如果我输入"ABC",则应该搜索["ABC", "ACB", "BAC", "BCA", "CAB", "CBA"]中的所有单词组合。
我希望能够使用弹性搜索查询从数据库中搜索单词的排列组合。 例如:如果我输入"ABC",则应该搜索["ABC", "ACB", "BAC", "BCA", "CAB", "CBA"]中的所有单词组合。
有助于您的是术语集查询https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-set-query.html
实际实现过程会太复杂,无法在此处作为答案,并且也太具体化。但是,如果按照上面链接中描述的方式对文档进行索引,使得“A”、“B”和“C”成为数组的标记,您将能够通过所有这些标记的排列组合进行搜索。
另一个选择是使用match_phrase查询https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html
如果您指的是实际单词并且它们可以作为独立关键字索引,那么这应该能够工作。匹配的关键词越多,文档得分就越高。并且单词顺序将不重要,这意味着如果您搜索"A B C",则会匹配包含"A B C"、"B A C"、"C B A"等内容的文档。通过添加参数,您可以找到部分匹配的文档,例如包含"A C"的文档。
A,B,C
等个体标记?然后您可以编写一个long bool query
或者您可以执行一个multi_match
查询。 - JBone