如何增加所有搜索词的记录而不是 Elasticsearch 中所有搜索词的 OR?
How to boost records with all search terms than OR of all search terms in Elasticsearch?
我已经配置了默认的elasticsearch配置。当我搜索 "foo bar" 时,我得到的结果只有 "foo" 或 "bar" 在顶部,而 "foo" 和 "bar" 都不在顶部。
有没有一种方法可以提高包含所有搜索词的记录。
您可以将 "OR" 和 "AND" 逻辑组合为单个 bool
查询中的两个查询,例如
{
"query": {
"bool": {
"must": {
"match": {
"your_field": {
"query": "foo bar"
}
}
},
"should": {
"match": {
"your_field": {
"query": "foo bar",
"operator": "and"
}
}
}
}
}
}
其中must
部分包含"OR"逻辑(operator
未指定,默认为or
)以确保至少匹配一个术语,而如果所有项都匹配,should
部分将提供提升,即 "AND" 逻辑。
您还可以进一步提供选项,以防您想要匹配和精确短语(使用 phrase
查询),例如http://marcobonzanini.com/2015/02/09/phrase-match-and-proximity-search-in-elasticsearch/
我已经配置了默认的elasticsearch配置。当我搜索 "foo bar" 时,我得到的结果只有 "foo" 或 "bar" 在顶部,而 "foo" 和 "bar" 都不在顶部。
有没有一种方法可以提高包含所有搜索词的记录。
您可以将 "OR" 和 "AND" 逻辑组合为单个 bool
查询中的两个查询,例如
{
"query": {
"bool": {
"must": {
"match": {
"your_field": {
"query": "foo bar"
}
}
},
"should": {
"match": {
"your_field": {
"query": "foo bar",
"operator": "and"
}
}
}
}
}
}
其中must
部分包含"OR"逻辑(operator
未指定,默认为or
)以确保至少匹配一个术语,而如果所有项都匹配,should
部分将提供提升,即 "AND" 逻辑。
您还可以进一步提供选项,以防您想要匹配和精确短语(使用 phrase
查询),例如http://marcobonzanini.com/2015/02/09/phrase-match-and-proximity-search-in-elasticsearch/