我有一个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个结果。 当我将facet查询作为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]}
怎么可能?求和单个计数和得到累计结果之间的逻辑是否不同?
答案 0 :(得分:0)
如果您的数据类型为:
<dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true"/>
这意味着单个文档可以包含多个ID。 当您应用过滤器查询时,您会计算文档的数量(在您的情况下为177),但是当您在多值字段上进行分析时,您将获得字段中的标记计数,这意味着您仍有177个字段,但其中一些可能包含更多字段超过一个身份证,共计300人。
检查此论坛帖子是否存在类似问题:http://lucene.472066.n3.nabble.com/How-to-facet-data-from-a-multivalued-field-td3897853.html