Solr的。奇怪的方面搜索结果

时间:2014-01-03 20:32:30

标签: java solr

我发出此请求:

  

http://localhost:8983/solr/collection1/select/?indent=on&q=*:*&fl=*&facet=true&facet.field=id&rows=99

并查看下一个结果:

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">31</int>
<lst name="params">
<str name="facet">true</str>
<str name="fl">*</str>
<str name="indent">on</str>
<str name="q">*:*</str>
<str name="facet.field">id</str>
<str name="rows">99</str>
</lst>
</lst>
<result name="response" numFound="28" start="0">...</result>
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="id">
<int name="0579B002">1</int>
<int name="100-435805">1</int>
<int name="3007WFP">1</int>
<int name="6H500F0">1</int>
<int name="9885A004">1</int>
<int name="EN7800GTX/2DHTV/256M">1</int>
<int name="EUR">1</int>
<int name="F8V7067-APL-KIT">1</int>
<int name="GB18030TEST">1</int>
<int name="GBP">1</int>
<int name="IW-02">1</int>
<int name="MA147LL/A">1</int>
<int name="NOK">1</int>
<int name="SOLR1000">1</int>
<int name="USD">1</int>
<int name="UTF8TEST">1</int>
<int name="VA902B">1</int>
<int name="adata">1</int>
<int name="apple">1</int>
<int name="asus">1</int>
<int name="ati">1</int>
<int name="belkin">1</int>
<int name="canon">1</int>
<int name="corsair">1</int>
<int name="dell">1</int>
<int name="maxtor">1</int>
<int name="samsung">1</int>
<int name="viewsonic">1</int>
<int name="SP2514N">0</int>
<int name="TWINX2048-3200PRO">0</int>
<int name="VDBDB1A16">0</int>
<int name="VS1GB400C3">0</int>
</lst>
</lst>
<lst name="facet_dates"/>
<lst name="facet_ranges"/>
</lst>
</response>

我无法理解为什么会看到

    <int name="SP2514N">0</int>
    <int name="TWINX2048-3200PRO">0</int>
    <int name="VDBDB1A16">0</int>
    <int name="VS1GB400C3">0</int>

什么意思?

VS1GB400C3  is not matching in all xml document

更新

请求:

http://localhost:8983/solr/collection1/select/?indent=on&q=*&fl=id&rows=9999

响应:

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="fl">id</str>
<str name="indent">on</str>
<str name="q">*</str>
<str name="rows">9999</str>
</lst>
</lst>
<result name="response" numFound="28" start="0">
<doc>
<str name="id">GB18030TEST</str>
</doc>
<doc>
<str name="id">6H500F0</str>
</doc>
<doc>
<str name="id">F8V7067-APL-KIT</str>
</doc>
<doc>
<str name="id">IW-02</str>
</doc>
<doc>
<str name="id">MA147LL/A</str>
</doc>
<doc>
<str name="id">adata</str>
</doc>
<doc>
<str name="id">apple</str>
</doc>
<doc>
<str name="id">asus</str>
</doc>
<doc>
<str name="id">ati</str>
</doc>
<doc>
<str name="id">belkin</str>
</doc>
<doc>
<str name="id">canon</str>
</doc>
<doc>
<str name="id">corsair</str>
</doc>
<doc>
<str name="id">dell</str>
</doc>
<doc>
<str name="id">maxtor</str>
</doc>
<doc>
<str name="id">samsung</str>
</doc>
<doc>
<str name="id">viewsonic</str>
</doc>
<doc>
<str name="id">USD</str>
</doc>
<doc>
<str name="id">EUR</str>
</doc>
<doc>
<str name="id">GBP</str>
</doc>
<doc>
<str name="id">NOK</str>
</doc>
<doc>
<str name="id">3007WFP</str>
</doc>
<doc>
<str name="id">VA902B</str>
</doc>
<doc>
<str name="id">0579B002</str>
</doc>
<doc>
<str name="id">9885A004</str>
</doc>
<doc>
<str name="id">SOLR1000</str>
</doc>
<doc>
<str name="id">UTF8TEST</str>
</doc>
<doc>
<str name="id">EN7800GTX/2DHTV/256M</str>
</doc>
<doc>
<str name="id">100-435805</str>
</doc>
</result>
</response>

我不能在这里复制所有文档示例。

3 个答案:

答案 0 :(得分:1)

这里未经测试但半知情的猜测......

此值来自的文档可能已被删除。 Lucene删除和文档更新将文档的旧版本标记为已删除(或逻辑删除),而不实际重写磁盘上的任何数据。

因此,之前的文档将该术语插入到索引的术语词典中,然后可能已更新或删除。因此该术语仍然在字典中,但是包含它的当前文档为零。

发布optimizeexpungeDeletes=true提交应该摆脱无关的条款。

答案 1 :(得分:0)

根据您的构面查询和结果,您拥有VS1GB400C3的ID。 您可以发布id的字段定义,一些已编制索引的示例数据吗?

同时尝试queryinf id:VS1GB400C3查看它找到的内容。

这是自定义数据,除非您解释为什么理解某些结果并且不了解其他结果,否则其他人无法知道。它可以帮助我们回答您的问题,并提供更详细的问题。

答案 2 :(得分:0)

我可能错了。但是IIRC facetting返回该字段的每个唯一值(不依赖于您的查询),然后它将匹配您的查询结果,您将从那里获得计数。因此,如果您只想要与查询对应的构面结果,则应该添加

facet.mincount=1

在查询中。