我在多个字段上进行搜索,我想避免使用常用术语,并且我希望结合所有字段的结果。目前,我已将此(cutoff_frequency
,boost
,bool must filters
等省略,以使问题更加明显:)
{
query: {
bool: {
should: {
[
{
common: {
title: {
query: q
}
}
},
{
common: {
description: {
query: q
}
}
}
]
}
}
}
}
假设我有以下记录:
id: 1
title: 'Fox'
description: 'Small fox'
id: 2
title: 'Fox'
description: 'Is quick'
id: 3
title: 'Legendary'
description: 'Quick brown fox'
我的查询是The quick brown fox
。在上面的解决方案中,id 1和id 2得分最高,因为它们与2 shoulds
中的2个匹配。 ID为3的记录在title
中不匹配,因此只有2 shoulds
中的1个匹配。
正确的顺序应该是
id: 3 (matches 3 words)
id: 2 (matches 2 words)
id: 1 (matches 1 word, even tough twice)
我不想将两个字段都映射到一个字段,因为我希望在出现并列时区分它们,因此例如对于查询fox
,正确的结果将是:
id: 1 (matches twice)
id: 2 (matches once but in the title)
id: 3 (matches once but in the description)
对此的任何建议都将受到高度赞赏。感谢。