2013-04-09 67 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的文檔。 可能會在客戶端完成嗎?