簡體   English   中英

如何排除SOLR查詢中的字段

[英]How to exclude fields in a SOLR query

我有一個SOLR查詢,它應該獲取我存儲的所有字段,除了一個字段。
假設我有20個字段,我是否需要對我想要獲取的19個字段進行硬編碼
&fl=[f],[f],[f],....[f]'
或者有辦法做類似的事情
&fl=*,![f]'

[f]代表字段名稱。

不幸的是,通過查詢字符串刪除字段名稱的能力仍然是一個出色的改進請求。 有關詳細信息,請參閱SOLR-3191

在實現此改進之前,您需要在fl參數中指定所有19個字段。 但是,您可以更新默認/select requestHandler以定義要作為默認設置返回的19個字段,這些字段將應用於所有查詢,除非它在查詢字符串中被覆蓋。

以下是示例solrconfig.xml中默認/select requestHandler的修改版本:

  <requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
     will be overridden by parameters in the request
     -->
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <int name="rows">10</int>
      <str name="df">text</str>
      <!-- Only showing 3 fields for this example -->
      <str name="fl">field1,field2,field3</str>
    </lst>
  </requestHandler>

有關這些默認設置和requestHandler配置的更多詳細信息,請參閱SolrConfig中的RequestHandlers和SearchComponents

另一種選擇可能是:您想要包含的字段應該共享一個共同的前綴; 最重要的是,你可以在你的fl中使用globs。 因此,例如,假設前綴為toincincluded_,您可以使用類似的fl值

被包括_*

另一種選擇是使用Document變換器ValueAugmenterFactory將字段返回的實際值替換為空字符串。

如果您的要求只是為了避免返回該字段的內容,那么這應該有效。

下面是替換title字段內容的示例:

&fl=*,title:[value v=""]

還有另一個更簡單的補丁可以解決這里的簡單案例: https//issues.apache.org/jira/browse/SOLR-9467如果被接受它會像這樣工作:

&fl=*,[fl.rm v="title"]

刪除標題字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM