我正在根据预定义的标准列表过滤掉solr返回的facet。
例如,我正在查询不同类型的文档。返回的方面如下:
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="applicationName">
<int name="microsoft">2304</int>
<int name="word">2277</int>
<int name="0">1550</int>
<int name="office">598</int>
<int name="8">471</int>
<int name="9">446</int>
<int name="90">445</int>
<int name="10">435</int>
<int name="100">426</int>
<int name="9.0">418</int>
<int name="10.0">411</int>
<int name="8.0">375</int>
<int name="80">375</int>
<int name="2">328</int>
<int name="5">308</int>
<int name="acrobat">272</int>
让我们说我不希望这个facet_field显示微软。查询当前如下所示。我已尝试使用标记和排除过滤器,但我很幸运...
q=*%3A*&wt=xml&indent=true&facet=true&facet.field=applicationName
编辑我当前的解决方案是添加自定义搜索处理程序并执行过滤后查询执行。我想通过这种方式通过查询机制获得解决方案,这将涉及更少的处理。
答案 0 :(得分:2)
你有没有试过“facet.query”参数?如果我已正确理解您的问题,如果您在请求中放置了facet.query = -applicationName:microsoft,Solr将完全按照您的意愿执行操作。所以,它应该是:
Q = %3A &安培;小面=真安培; facet.field =&的applicationName放大器; facet.query = -ApplicationName:微软
编辑: 以上提示是错误的。它只返回字段“applicationName”上没有“microsoft”的文档数。
您应该在“q”参数上添加相同的查询。就像那样:
Q = -ApplicationName:微软&安培;小面=真安培; facet.field =的applicationName