elasticsearch - 弹性搜索排列查询
问题描述
我想要一个弹性搜索查询来搜索数据库中单词的排列。例如:- 如果我输入“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
如果“ABC”是指实际单词并且它们可以作为单独的关键字进行索引,这将起作用。然后,匹配的越多,文档的得分就越高。单词顺序无关紧要,因此这意味着如果您搜索“AB C”,您将匹配包含“AB C”、“BA C”、“CB A”等的文档。通过添加slop
参数,您将能够找到文档部分匹配,例如包含“A C”的那个。
推荐阅读
- ssis - Azure PAAS 服务器中的 SSIS 脚本任务错误:命名空间中不存在类型或命名空间名称“Office”
- ruby-on-rails - 如果 sidekiq 作业在 Rails 中处于死队列中,请重试它
- amazon-web-services - RDS 交换使用情况。多少交换是可以的
- javascript - 从 Polymer Dom 模块中的方法禁用选择标签的下拉列表不起作用
- typescript - 打字稿将模块导入一个内联js
- vb.net - 内置控件/功能以在表单关闭时清除文本输入
- python - 如何在数组中设置变量以进行多任务处理?
- keras - 为什么当我删除过滤器及其相关权重时 CNN 的准确性会下降?
- c# - 如何在不创建新 PDF 文件的情况下向现有 PDF 文件添加新文本
- jenkins - Openshift:用户“系统:服务帐户:
:jenkins" 无法创建 PV : RBAC: clusterrole.rbac.authorization.k8s.io "create" not found