2013-04-09 126 views
2

我是SOLR的新成员,目前我的查询返回具有各自PostCodes的公司,postCode是一个数组类型字段,其中一些结果包含其postCode节点的多个值,一些只有一个单一的价值。具有单个或多个值的SOLR查询字段

结果集:

<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。这可能使用SOLR查询吗?

例:

我搜索邮政编码= 2068

我的第一个查询将返回唯一的克里斯体育和DJ用品和小工具,因为他们只对邮政编码字段中的一个值。

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

谢谢大家!

回答

1

没有直接的方法来获取多值字段或函数查询中的项目计数。
您可以在索引过程中始终保持字段计数,并在查询时间内使用它。

0

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