在Solr中对多值param使用Filter Query,在响应中使用重复的文档

时间:2012-09-07 22:13:28

标签: solr

在Solr

的请求中使用fq param会遇到奇怪的问题
curl '127.0.0.1:8080/solr/app/select?rows=0&start=0&q=app+AND+categoryId:20'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int>
<lst name="params"><str name="start">0</str><str name="q">app AND categoryId:20</str>
<str name="rows">0</str></lst></lst>
<result name="response" numFound="42236" start="0"></result>
</response>

和第二次请求

curl '127.0.0.1:8080/solr/app/select?rows=0&start=0&q=app+AND+categoryId:20&fq=categoryId:20'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int>
<lst name="params"><str name="start">0</str><str name="q">app AND categoryId:20</str>
<str name="fq">categoryId:20</str><str name="rows">0</str></lst></lst>
<result name="response" numFound="69480" start="0"></result>
</response>

使用另外的参数&amp; fq = categoryId:20不同,但正如您所看到的,此过滤器也出现在主查询中,并且必须对结果没有影响。

我检查了回复,并在第一次请求中发现了很多重复项。

还标签显示422I类别ID = 20,

的文档

那么为什么查询&amp; fq = categoryId:20会返回那么多(和重复)文档? 附:所有其他类别的工作正确。

计划的一部分:

    <field name="id" type="int" indexed="true" stored="true" required="true"/>
    <field name="title" type="text_general" indexed="true" stored="true" required="true"/>
    <field name="description" type="text_general" indexed="true" stored="false" required="true"/>
    <field name="categoryId" type="int" indexed="true" stored="false" required="true" multiValued="true"/>
    <field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="true"/>
    <field name="type" type="int" indexed="true" stored="false" required="true"/>

1 个答案:

答案 0 :(得分:2)

可能是Facet Caching已删除的记录问题。查看SOLR-3793