簡體   English   中英

Solr 中的“multiValued”字段類型有什么用?

[英]What is the use of “multiValued” field type in Solr?

我是 Apache Solr 的新手。 即使在閱讀了文檔部分之后,我也很難清楚地理解multiValued字段類型屬性的功能和使用。

Solr 內部做什么/處理/處理標記為multiValued的字段?

Solr中的多值字段與非多值字段之間的索引有何區別?

有人可以用一些很好的例子來解釋嗎?

醫生說:

多值=真|假

如果此字段在每個文檔中可能包含多個值,即如果它可以在文檔中出現多次,則為真

當字段存在多個值時,多值字段很有用。 一個簡單的例子是標簽,可能有多個標簽需要被索引。 因此,如果我們將標簽字段設置為多值,則 solr 響應將返回一個列表而不是字符串值。 需要注意的一點是,您需要為標簽的每個值提交多行,例如:

<field name="tags">tag1</tags>
<field name="tags">tag2</tags>
...
<field name="tags">tagn</tags>

擁有所有值索引后,您可以按任何值搜索或過濾結果,例如您可以使用以下查詢找到所有帶有 tag1 的文檔

q=tags:tag1

或使用標簽過濾掉結果,如

q=query&fq=tags:tag1

multiValued 在模式中定義是否允許字段具有多個值。

例如:
如果我有一個名為 ID 的 fieldType,它是 multiValued=false 索引文檔,例如:

doc {
  id : [ 1, 2]
  ...
}

會導致在索引線程中拋出異常並且文檔不會被索引(模式驗證將失敗)。

另一方面,如果我確實有一個字段的多個值,我想設置 multiValued=true 以保證索引正確完成,例如:

doc {
  id : 1
  keywords: [ hello, world ]
  ...
}

在這種情況下,您可以將“關鍵字”定義為多值字段。

我只對復制字段使用多個值字段,所以這樣想,說所有字段都是單值的,除非它是一個復制字段,例如我有以下字段:

<field name="id" type="string" indexed="true" stored="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="subject" type="string" indexed="true" stored="true"/>
<field name="location" type="string" indexed="true" stored="true"/>

我只想查詢一個字段,可能要搜索上面的所有 4 個字段,那么我們需要使用 copyfield。 首先創建一個新字段調用'all',然后將所有內容復制到'all'

<field name="all" type="text" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="all"/>

現在字段'all'需要是多值的。

暫無
暫無

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

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