2

我有一个带有“名称”和“描述”的索引。我正在对我的索引运行布尔查询。有时该词同时出现在名称和描述字段中,在这种情况下,名称和描述都包含搜索词的文档的得分高于名称或描述包含搜索词的文档。

我想要的是让他们得分相等。因此,名称或描述中包含该术语的文档与名称和描述中都存在搜索词的文档具有相同的分数。

可能吗?

这是示例:

{
    "name":     "xyz",
    "description":  "abc xyz"
},
{
    "name":     "abc",
    "description":  "xyz pqr"
},
{
    "name":     "xyz",
    "description":  "abc pqr"
}

如果用户搜索术语“xyz”,我希望上面的所有三个文档都具有相同的分数。因为所有文档在名称或描述或两个字段中都包含术语“xyz”。

4

2 回答 2

1

您可以为此使用过滤查询。过滤器不计分。请参阅下面的查询以搜索该术语"xyz"

POST <index name>/<type>/_search
{
    "filtered": {
        "query": {
            "match_all": {}
        },
        "filter": {
            "bool": {
                "should": [
                    {
                        "term": {
                            "name": "xyz"
                        }
                    },
                    {
                        "term": {
                            "description": "xyz"
                        }
                    }
                ]
            }
        }
    }
}
于 2015-01-27T10:21:10.680 回答
0

我认为您可以:

于 2013-05-14T15:36:13.237 回答