3

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

...

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

例子:

我搜索了 postCode = 2068

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

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

谢谢大家!

4

2 回答 2

1

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

于 2013-04-09T08:20:15.463 回答
0

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

于 2013-04-09T17:52:35.163 回答