search - 如何提高Elasticsearch中的搜索相关性顺序?

标签 search elasticsearch lucene match

我有一个名为title的字段,其值如下

  • 苹果iphone 6s
  • 苹果iphone 6
  • 苹果iphone 6s plus
  • 苹果iphone
  • 苹果iphone 5s

  • 因此,如果用户搜索

    apple iphone 6



    然后它应该按顺序排列

    2 > 1 > 3 > 4 > 5




    如果用户搜索

    apple iphone 6s



    它应该按顺序排列

    1 > 3 > 2 > 4 > 5.



    如何使用elasticsearch做到这一点。

    我用过multi_search和所有。但是没有帮助。

    顺序应该是完全匹配,然后是前缀。然后是词组,然后是包含所有3个词的字段,然后是包含2个词的字段,然后是包含1个词的字段,依此类推。

    谢谢您的帮助。

    最佳答案

    您可以尝试:

    {
      "query": {
        "bool":{
          "should":[
            {"match_phrase":{"title":"apple iphone 6s"}},
            {"match_phrase_prefix":{"title":"apple iphone 6s"}}
          ]
        }
      }
    }
    

    如果要包含“iphone”和“apple”的所有数据,则应为搜索中的每个单词添加一个match_phrase_prefix

    关于search - 如何提高Elasticsearch中的搜索相关性顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37360414/

    相关文章:

    ruby-on-rails - 搜索表单不起作用,并在 Rails 应用程序中出错

    search - 使用 Drupal 进行高级搜索( View 和 CCK)

    android - 在 android 中使用 firebase 按名称搜索

    lucene - Lucene 4.0中的术语向量频率

    php - Laravel - 检索以 "X"开头的条目

    php - 在 PHP Symfony 中从 ElasticSearch 迁移到 OpenSearch

    elasticsearch - 方面的多个属性(elasticsearch)

    elasticsearch - 使用查询过滤器为聚合设定范围

    linux - Solr 在 Linux 操作系统上挂起创建核心的原因是什么?

    java - 帮助开始使用 Java 中的 Apache Lucene