【问题标题】:SOLR query field with single or multiple values具有单个或多个值的 SOLR 查询字段
【发布时间】:2013-04-09 07:50:26
【问题描述】:

我是 SOLR 的新手,目前我的查询返回公司及其各自的 postCode,postCode 是一个数组类型的字段,一些结果包含其 postCode 节点的多个值,而一些只有一个值。

结果集:

<doc>
 <str name="company">Alien Technology</str>
 <arr name="postCode">
   <str>2068</str>
   <str>2065</str>
   <str>2066</str>
   <str>2061</str>
   <str>2077</str>
 </arr>
 ....
</doc>

<doc>
 <str name="company">Cris' Sports</str>
 <arr name="postCode">
   <str>2068</str>
 </arr>
 ...
</doc>

<doc>
 <str name="company">Hyper Consultation Firm</str>
 <arr name="postCode">
   <str>2068</str>
   <str>2000</str>
   <str>2071</str>
 </arr>
 ...
</doc>

<doc>
 <str name="company">DJ Goods & Gadgets</str>
 <arr name="postCode">
   <str>2068</str>
 </arr>
 ...
</doc>

...

我的问题是,是否可以仅获取其邮政编码只有一个值的数据,反之亦然,获取那些其邮政编码字段包含多个值的数据,并排除其他邮政编码只有一个值的数据。这可以使用 SOLR 查询吗?

示例:

我搜索了 postCode = 2068

我的第一个查询将只返回 Cris Sports 和 DJ Goods and Gadgets,因为它们的 postCode 字段只有一个值。

我的第二个查询将仅返回 Alien Technology 和 Hyper Consultation Firm,因为它们的 postCode 字段都包含多个值。

谢谢大家!

【问题讨论】:

    标签: java xml solr tooltwist


    【解决方案1】:

    没有直接的方法可以获取多值字段或函数查询中的项目计数来计算相同。
    您始终可以在索引期间维护字段计数并在查询期间使用它。

    【讨论】:

      【解决方案2】:

      当您按分数(desc)排序时,只有一个值的字段将具有更高的分数,因此将在其他字段之前列出。 不确定是否有办法将结果集限制为仅包含分数匹配最大分数的文档。 可以在客户端完成吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-01
        • 2011-09-02
        • 1970-01-01
        • 1970-01-01
        • 2011-09-15
        相关资源
        最近更新 更多