0

我正在使用solr-client执行多面 Solr 查询,我的 javascript solr 查询脚本的结果与 Solr 中列出的内容不匹配。

所以在 Solr 中,我创建的查询如下。这给出了我想要的结果。

在此处输入图像描述

而我对应的 javascript facet 查询脚本如下。

exports.list_of_all_car_trims = function(solrPrdCfsClient, callback) {
var carTrimsQuery = solrPrdCfsClient.createQuery()
.q('*:*')
.start(0)
.rows(10)
.matchFilter('ManufacturerName','Ford')
.matchFilter('RangeModelWithYears','Fusion (02-12)')
.facet({
    field:'TrimName',
    mincount:'1'
});
solrPrdCfsClient.search(carTrimsQuery,function(err,obj) {
    if(err) {
        callback(err,null);
    }
    else {
        callback(null, obj.facet_counts.facet_fields);
        console.log(obj.facet_counts.facet_fields);
    }
});
};

但是,我的 javascript 查询脚本的结果与 Solr 的结果不匹配。

我假设我有正确的过滤器('ManufacturerName','Ford' & 'RangeModelWithYears','Fusion (02-12)'),但可能不在 javascript 查询脚本中的正确位置?

任何帮助将不胜感激。谢谢。

4

1 回答 1

0

我认为这可能是我遗漏的一些“次要”的东西,而且确实是(尽管这个“次要”的东西没有通过我的整个测试!)。

因为我的matchFilter条件包含空格,所以我需要在此周围添加一些语音标记。

我下面的代码有效。

exports.list_of_all_car_trims = function(solrPrdCfsClient, ManufacturerName, RangeModelWithYears, callback) {
    var carTrimsQuery = solrPrdCfsClient.createQuery()
    .q('*:*')
    .start(0)
    .rows(10)
    .matchFilter('ManufacturerName','Ford')
    .matchFilter('RangeModelWithYears','"Fusion (02-12)"')
    .facet({
        on:true,
        field:'TrimName',
        mincount:'1',
    });
    solrPrdCfsClient.search(carTrimsQuery,function(err,obj) {
        if(err) {
            callback(err,null);
        }
        else {
            callback(null, obj.facet_counts.facet_fields);
        }
    });
};
于 2021-01-25T10:25:18.260 回答