1

当“布尔”字段类型为 TRUE 时,在搜索提升结果的正确方法时,我得到了很多“静态”,大多数结果都在谈论布尔搜索。

注意我们正在使用 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()

我现在想做的是在mediaTRUE 的地方进一步提升结果。

有人可以告诉我如何为该media领域添加适当的提升吗?

4

1 回答 1

5

有不同的方法可以提高您的结果,请查看此问题以了解更多信息。您的用例似乎很简单,您可以在索引时执行此操作,但我宁愿在查询时执行此操作,只需在您的bool 查询中添加一个 should 子句并在需要时对其进行适当的提升:

{
    "bool" : {
        "must" : {
            ...
        },
        "should" : [
            {
                .....
            },
            {
                "term" : { "media" : "TRUE" }
            }
        ],
    }
}

新子句是可选的,但它使匹配文档的分数更高。如有必要,您可以为其添加特定的助推器,其值主要取决于其他子句。

于 2013-06-11T08:10:39.630 回答