java - 如何从solr多个 "AND"过滤查询排除特定 "Tag"

标签 java search solr lucene full-text-search

solr 4.3

这是我的查询请求参数:

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">15</int>
  <lst name="params">
    <str name="facet">true</str>
    <str name="indent">true</str>
    <str name="q">*:*</str>
    <str name="_">1373713374569</str>
    <arr name="facet.field">
      <str>{!ex=city}CityId</str>
      <str>{!ex=company}CompanyId</str>
    </arr>
    <str name="wt">xml</str>
    <str name="fq">{!tag=city}CityId:729 AND {!tag=company}CompanyId:16122</str>
  </lst>
</lst>

这是查询响应“Facet”内容:

<lst name="facet_counts">
  <lst name="facet_queries"/>
  <lst name="facet_fields">
    <lst name="CityId">
      <int name="11">100171</int>
      <int name="1404">89406</int>
      <int name="0">77477</int>
      <int name="1366">65780</int>
      <int name="1362">58092</int>
      <int name="729">29213</int>
      <int name="798">28975</int>
               ...
      <int name="7262">808</int>
      <int name="432">776</int>
      <int name="1146">772</int>
      <int name="1653">765</int>
      <int name="1078">668</int>
      <int name="814">667</int>
      <int name="2049">402</int>
      <int name="456">401</int>
      <int name="401">390</int>
    </lst>
    <lst name="CompanyId">
      <int name="16122">971</int>
      <int name="69">0</int>
      <int name="71">0</int>
      <int name="72">0</int>
      <int name="79">0</int>
      <int name="80">0</int>
      <int name="85">0</int>
      <int name="88">0</int>
      <int name="94">0</int>
                ...
      <int name="98">0</int>
      <int name="104">0</int>
      <int name="112">0</int>
      <int name="113">0</int>
      <int name="118">0</int>
      <int name="123">0</int>
      <int name="126">0</int>
      <int name="131">0</int>
      <int name="136">0</int>
      <int name="139">0</int>

    </lst>
  </lst>
  <lst name="facet_dates"/>
  <lst name="facet_ranges"/>
</lst>

您可以看到 CityId 中的“Facet”是正确的,它排除了 {! Tag=city} CityId: 729 查询,但CompanyId中的“Facet”不正确,不排除{! Tag=company} CompanyId: 16122 查询。怎么解决?

最佳答案

您可以尝试将 fq=!tag=city}CityId:729&fq={!tag=company}CompanyId:16122 作为单独的标记(应以 AND 的方式工作)。

关于java - 如何从solr多个 "AND"过滤查询排除特定 "Tag",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17629652/

相关文章:

solr - 在 Solr 中查询多值字段中的特定索引值

java - Solr:从分词器填充单独的字段

java - 无法使用此类数据类型创建 Oracle 函数

java - 有没有办法更新 mysql 中的列数据,其中用户使用 jsp 和 html 单击链接?

java - android构建系统如何处理加载 native 共享库的java库

forms - 自定义 Google 自定义搜索

java - 在 solr 的类路径中找不到资源 'solrconfig.xml'

java - 带有 mongodb bson 库的 Mongodb 驱动程序在单独的项目中使用时会导致 completableFuture 挂起

c - 解析字符串并将 token 的索引放入表中

c++ - 给定字典和字母查找最长的单词