java - Solr 单独过滤出分面结果

标签 java search solr faceted-search

我正在根据预定义的标准列表过滤掉 solr 返回的方面。

例如,我正在查询不同类型的文档。返回的切面如下:

<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>

假设我不想将 microsoft 作为此 facet_field 的结果显示。当前的查询如下所示。我已经尝试使用标签和排除过滤器,但我运气不好......

q=*%3A*&wt=xml&indent=true&facet=true&facet.field=applicationName

编辑我目前的解决方案是添加自定义搜索处理程序并执行过滤后查询执行。我希望通过查询机制获得一个解决方案,这种方式涉及较少的处理。

最佳答案

您是否尝试过“facet.query”参数?如果我正确理解了您的问题,如果您在请求中添加 facet.query=-applicationName:microsoft,Solr 将完全按照您的要求执行。所以,它应该是这样的:

q=%3A&facet=true&facet.field=applicationName&facet.query=-applicationName:microsoft


编辑: 上面的提示是错误的。它只会返回字段“applicationName”中没有“microsoft”的文档数。

您应该对“q”参数进行相同的查询。就这样:

q=-applicationName:microsoft&facet=true&facet.field=applicationName

关于java - Solr 单独过滤出分面结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16306663/

相关文章:

java - google appengine channel API (Java) 的问题

java - 如何在 Java 中正确创建扩展泛型接口(interface)的有界泛型类

java - JSP getQueryString() 和 getParameterMap() 返回不同的参数

c - 使用 bsearch 和 cstring,没有结果

apache - Solr Cell NoSuchMethodError

postgresql - Solr PostgreSQL 基本配置

lucene - Solr/Lucene : Indexing facet values

java - JPA/Hibernate - 删除元素时出现 ConstraintViolationException

javascript - 从特定 DOM 部分搜索数据

search - 哪些搜索引擎具有全功能的 API?