当“布尔”字段类型为TRUE时,在搜索提升结果的正确方法时,我得到了很多“静态”,大多数结果都是在讨论布尔搜索。
N.B。我们正在使用php elastica库但是如果你只能提供json那么好,我可以从中进行管理。
我有一个包含5个字段的索引,我们有一些内置的提升正在进行中,如您所见:
array(
'article_id' => array('type' => 'string', 'include_in_all' => FALSE),
'subject' => array('type' => 'string', 'include_in_all' => TRUE, 'boost' => 8),
'summary' => array('type' => 'string', 'include_in_all' => TRUE, 'boost' => 5),
'content' => array('type' => 'string', 'include_in_all' => TRUE, 'boost' => 3),
'media' => array('type' => 'boolean', 'include_in_all' => FALSE),
'pub_date' => array('type' => 'date', 'include_in_all' => FALSE)
)
我还使用pub_date
查询对象上的addShould()
方法,通过基于年龄的\Elastica\Query\Bool()
字段在各个级别成功提升了结果。
我现在要做的是在media
为真的情况下进一步提升结果。
有人可以告诉我如何为media
字段添加适当的提升吗?
答案 0 :(得分:3)
有多种方法可以提升您的搜索结果,请查看this question以了解详情。你的用例看起来很简单,你可以在索引时进行,但我宁愿在查询时这样做,只需在bool query中添加一个should子句,并在需要时给予适当的推动:
{
"bool" : {
"must" : {
...
},
"should" : [
{
.....
},
{
"term" : { "media" : "TRUE" }
}
],
}
}
新子句是可选的,但它会使匹配文档的得分更高。如果有必要,你可以添加一个特定的提升,它的值主要取决于其他条款。