【问题标题】:Analog SQL LIKE command for ElasticSearch用于 ElasticSearch 的模拟 SQL LIKE 命令
【发布时间】:2019-01-26 07:27:43
【问题描述】:

告诉我 ElasticSearch 的模拟 SQL LIKE 命令。

SQL 命令:

SELECT * FROM cities where 'blah Chicago blah' LIKE CONCAT('%', name, '%');

预期输出:[{id: 123, name: 'Chicago'}]。


这应该用于文本中实体的模糊搜索。

【问题讨论】:

    标签: elasticsearch sql-like fuzzy-search


    【解决方案1】:

    这并不完全是您所需要的,但我们可以从:

    {
      "query": {
        "query_string": { "default_field": "Name", "query": "Chicago" }
      }
    }
    

    此查询返回所有包含工作Chicago 的文档。

    您可以修改查询:

    {
      "query": {
        "query_string": { "default_field": "Name", "query": "*Chicago*" }
      }
    }
    

    在这种情况下,您会得到包含单词 Chicago 和包含单词 Chicago - ChicagoTown 的文档。

    【讨论】:

    • 感谢您的回答。我使用了这个解决方案一段时间。可能使用 pg_trgm 扩展是这个问题的最佳解决方案。
    【解决方案2】:

    Elastic Search 不适合此类任务( 它旨在将文本用作单词数组,而不是字符数组)。

    现在我使用 pg_trgm (word_similarity(text, text)) 扩展来完成我的任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2010-11-21
      • 2015-01-22
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多