0

我有一个 Solr 查询,它从大约 700,000 个文档的集合中返回结果。它在具有一个从属实例的单个主控上运行。

我过滤我的文档并在一个字段(sports_is)上运行分面。但是,单方面结果的计数、它们作为方面查询的组合以及将它们作为 fq 应用是不同的。这怎么可能?

这是我的 fq(非常简单):

fq":["type_id_v:configurable",
    "is_salable_i:1",
    "category_id_is:10143"]

此方面查询

"facet.query":"sports_is:(117532 OR 117519 OR 117520 OR 117521 OR 117522 OR 117518)"

返回 177 个结果。当我将构面查询作为 fq 添加到我的查询时,我也得到 177 个结果。所以这似乎是正确的计数。

"facet.field":"sports_is"

如果对单个结果求和(总和为 300),则返回更多结果:

    "facet_fields":{
  "sports_is":[
    "117523",2724,
    "117515",1767,
    "117514",1522,
    "117510",1423,
    "118851",502,
    "117517",473,
    "117516",458,
    "117527",327,
    "117511",297,
    "118863",240,
    "118855",181,
    "118866",175,
    "118865",160,
         "117520",149,
    "118867",97,
    "117509",88,
         "117521",58,
         "117518",42,
    "118854",42,
    "117512",38,
    "117524",38,
    "117513",37,
         "117519",36,
    "118853",17,
    "118856",17,
         "117522",15,
    "118864",9,
    "118868",7,
    "118860",2,
    "118857",1,
    "118862",1,
    "119190",1]}

这怎么可能?将单个计数相加和获得累积结果之间的逻辑是否不同?

4

1 回答 1

0

如果你的数据类型是这样的:

<dynamicField name="*_is" type="int"    indexed="true"  stored="true"  multiValued="true"/>

这意味着单个文档可以包含多个 ID。当您应用过滤器查询时,您会计算文档的数量(在您的情况下为 177),但是当您在多值字段上进行分面时,您会获得该字段中标记的计数,这意味着您仍然有 177 个字段,但其中一些可能包含更多超过一个 id 总共 300。

检查此论坛帖子是否存在类似问题: http: //lucene.472066.n3.nabble.com/How-to-facet-data-from-a-multivalued-field-td3897853.html

于 2013-10-10T08:37:27.123 回答