基于命中类型的ElasticSearch顺序



我开始在我的ReactJS项目中使用ElasticSearch,但我遇到了一些麻烦。

当我搜索时,我想让我的结果排序基于这个表

<表类> 全部损失 Start-hit Sub-hit Fuzzy-hit tbody><<tr>类别13510贸易名称24611正式名称78912

我需要了解你的问题。简而言之

1."如果在类别字段中发现了一个全命中,那么我们应该将其增强1"。

  1. 如果在official_name字段中发现一个全命中,我们应该提高7.

等等12种可能性?

如果这是你想要的,你将需要12个单独的查询,所有的查询都包含在一个巨大的bool ->该条款。

我不会为你写出查询,但我会给你一些指针,关于如何构建查询的4个子类型。

  1. 全部损失
{
"term" : {"field" : "category/tradE_name/official_name", "value" : "the_search_term"}
}
  • Start-hit
  • {
    "match_phrase_prefix" : {"category/trade_name/official_name" :  "the search term"}
    }
    
  • Sub-hit
  • {
    "regexp" : {
    "category/official/trade" : {"value" : "*term*"}
    }
    }
    
    4
  • 模糊
  • {
    "fuzzy" : {
    "category/trade/official" : {"value" : "term"}
    }
    }
    

    你需要一个巨大的bool

    {
    "query" : {
    "bool" : {
    "should" : [
    // category field queries, 4 total clauses.      
    {
    
    }
    // official field queries, 4 clauses, to each clauses assign the boost as per your table. that's it.
    ]
    }
    }
    }
    

    对于每个子句,根据您的表分配一个boost。,年代。

    HTH .

    最新更新