作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在对具有多个字段的文档进行免费文本搜索。当我执行搜索时,我希望在任何标签上都具有完美匹配的文档具有更高的评分。有什么办法可以从查询中做到这一点?
例如,文档有两个字段,分别称为label-a
和label-b
,当我执行以下多重匹配查询时:
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "apple",
"type": "most_fields",
"fields": [
"label-a",
"label-b"
]
}
}
]
}
}
}
"hits": [
{
"_index": "salad",
"_type": "fruit",
"_id": "4",
"_score": 0.581694,
"_source": {
"label-a": "apple pie and pizza",
"label-b": "pineapple with apple juice"
}
},
{
"_index": "salad",
"_type": "fruit",
"_id": "2",
"_score": 0.1519148,
"_source": {
"label-a": "grape",
"label-b": "apple"
}
},
{
"_index": "salad",
"_type": "fruit",
"_id": "1",
"_score": 0.038978107,
"_source": {
"label-a": "apple apple apple apple apple apple apple apple apple apple apple apple",
"label-b": "raspberry"
}
},
{
"_index": "salad",
"_type": "fruit",
"_id": "3",
"_score": 0.02250402,
"_source": {
"label-a": "apple pie and pizza",
"label-b": "raspberry"
}
}
]
grape
具有值
label-a
和对于
apple
具有值
label-b
的文档)在我搜索值苹果时得分最高,并且其中一个标签具有该确切值。无论确切的术语出现在哪个标签上,它都应该起作用。
最佳答案
因为Elasticsearch使用tf / idf模型进行评分,所以您可以获得这些结果。尝试在索引字段中另外指定“label-a”和“label-b”作为未分析(原始)字段。然后像这样重写您的查询:
{
"query": {
"bool": {
"should": {
"match": {
"label-a.raw": {
"query": "apple",
"boost": 2
}
}
},
"must": [
{
"multi_match": {
"query": "apple",
"type": "most_fields",
"fields": [
"label-a",
"label-b"
]
}
}
]
}
}
}
关于elasticsearch - Elasticsearch查询在多个字段上更倾向于完全匹配而不是部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40768823/
在 Haskell 中编程时,我经常遇到这个问题。在某些时候,我尝试模拟 OOP 方法。在这里,我正在为我发现的一款 Flash 游戏编写某种 AI,我想将各个部分和关卡描述为一个部分列表。 modu
我是一名优秀的程序员,十分优秀!