利用SOLR搭建企业搜索平台 之八(solr 实现去掉重复的搜索结果,打SOLR-236_collapsing.patch补丁)
2009-09-10 00:00:00 来源:WEB开发网结果:
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="collapse.field">popularity</str>
<str name="fl">id</str>
<str name="collapse.threshold">1</str>
<str name="indent">on</str>
<str name="q">*:*</str>
<str name="qt">collapse</str>
<str name="collapse">true</str>
</lst>
</lst>
<lst name="collapse_counts">
<str name="field">popularity</str>
<lst name="doc">
<int name="SP2514N">4</int>
<int name="F8V7067-APL-KIT">1</int>
<int name="MA147LL/A">1</int>
<int name="TWINX2048-3200PRO">1</int>
<int name="VS1GB400C3">3</int>
<int name="1">10</int>
</lst>
<lst name="count">
<int name="6">4</int>
<int name="1">1</int>
<int name="10">1</int>
<int name="5">1</int>
<int name="7">3</int>
<int name="0">10</int>
</lst>
<str name="debug">HashDocSet(6) Time(ms): 0/0/0/0</str>
</lst>
<result name="response" numFound="6" start="0">
<doc>
<str name="id">SP2514N</str>
</doc>
<doc>
<str name="id">F8V7067-APL-KIT</str>
</doc>
<doc>
<str name="id">MA147LL/A</str>
</doc>
<doc>
<str name="id">TWINX2048-3200PRO</str>
</doc>
<doc>
<str name="id">VS1GB400C3</str>
</doc>
<doc>
<str name="id">1</str>
</doc>
</result>
</response>
可以看到 collapse_counts 相关的输出:
<lst name="collapse_counts">
<str name="field">popularity</str>
<lst name="doc">
<int name="SP2514N">4</int>
...
</lst>
<lst name="count">
<int name="6">4</int>
<int name="1">1</int>
<int name="10">1</int>
<int name="5">1</int>
<int name="7">3</int>
<int name="0">10</int>
</lst>
<str name="debug">HashDocSet(6) Time(ms): 0/0/0/0</str>
</lst>
上面的 count 下的内容(它的顺序是result/doc的顺序),表示 popularity=6 相同的结果还有 4 个,与 popularity=1 相同的结果还有 1 个,依此类推。这样就可以显示给用户的界面里提示“相同的其它内容不有N个”。
使用的参数有:
#启用 collapse 组件
collapse=true
#用那个字段来 hash 去除重量内容
collapse.field=popularity
#要结果中可以最多出现几个相同的文档
collapse.threshold=1
当然还有其它参数,请看:org.apache.solr.common.params.CollapseParams 类。
更多精彩
赞助商链接