我开始在我的ReactJS项目中使用ElasticSearch,但我遇到了一些麻烦。
当我搜索时,我想让我的结果排序基于这个表
<表类>
全部损失
Start-hit
Sub-hit
Fuzzy-hit
tbody><<tr>类别 1 3 5 10 贸易名称2 4 6 11 正式名称 7 8 9 12 表类>
我需要了解你的问题。简而言之
1."如果在类别字段中发现了一个全命中,那么我们应该将其增强1"。
- 如果在official_name字段中发现一个全命中,我们应该提高7.
等等12种可能性?
如果这是你想要的,你将需要12个单独的查询,所有的查询都包含在一个巨大的bool ->该条款。
我不会为你写出查询,但我会给你一些指针,关于如何构建查询的4个子类型。
- 全部损失
{
"term" : {"field" : "category/tradE_name/official_name", "value" : "the_search_term"}
}
- Start-hit
- Sub-hit
- 模糊
{
"match_phrase_prefix" : {"category/trade_name/official_name" : "the search term"}
}
{
"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 .