当搜索“ bool(boolean) ”字段类型为TRUE的正确方法以增强结果时,会遇到很多“静态”问题,大多数结果都在谈论 bool(boolean) 搜索。

N.B.我们正在使用php elastica库,但如果您只能提供很好的json,则可以从中进行管理。

我有一个包含5个字段的索引,其中有一些内置的Boosting正在进行中,您可以在此处看到:

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为TRUE的情况下进一步提高结果。

有人可以告诉我如何为media字段添加适当的增强吗?

最佳答案

有多种提高结果的方法,请查看this question以了解更多信息。您的用例似乎很简单,您可以在索引时执行,但我宁愿在查询时执行,只需在bool query中添加should子句,并在需要时对其进行适当的增强:

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

new子句是可选的,但会使匹配文档的分数更高。如有必要,可以为其添加特定的增强,其值主要取决于其他子句。

关于php - 根据 bool 字段值提升Elasticsearch结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17029463/

10-13 07:46
查看更多