簡體   English   中英

Solr 搜索可以在鍵中包含通配符嗎?

[英]Could Solr search contains wildcard in key?

我有一個 json 塊在 solr 中保存為一個文檔,

{
    "internal":...
    "internet":...
    "interface":...
    "noise":...
    "noise":...
}

我可以搜索為“ inter*:* ”嗎? 我想找出以“inter”開頭的所有內容

不幸的是,我遇到了解析器錯誤,有什么辦法可以在密鑰中使用通配符進行搜索?

您可以使用Dynamic fields 它允許 Solr 索引您未在架構中明確定義的字段。

如果您發現忘記定義一個或多個字段,這將非常有用。 通過在可以添加到 Solr 的文檔中提供一些靈活性, Dynamic fields可以使您的應用程序不那么脆弱。

動態字段可以定義為

<dynamicField name="*_i" type="int" indexed="true"  stored="true"/>

有關動態字段的更多信息,請參閱 solr 文檔。動態字段

在此之后創建一個復制字段。 將動態字段復制到復制字段中。

完成此操作后,可以在 copyField 上進行查詢。

<dynamicField name="inter_*" type="string" indexed="true" stored="true"/>
<field name="internal_static" type="string" indexed="true" stored="true" multiValued="true"/>
<copyField source="inter_*" dest="emp_static"/>

不,不是真的。 如果提供通配符對您很重要,則您必須將其作為copyField執行,實際上是將所有內容復制到單個字段中,然后查詢該字段。

只要您使用edismax查詢處理程序,您就可以通過qf提供多個字段,而無需在q參數中指定每個字段 - 這通常更靈活,但它仍然需要指定每個字段。

還有一個鮮為人知的功能,名為“使用每個字段qf覆蓋的字段別名” (至少我不知道)。 如果我已經正確解析了從幾次網絡搜索中找到的內容,您應該可以執行f.i_fields.qf=internal internet interface&qf=i_fields 實際上創建了一個i_fields別名來引用這三個字段。 你仍然必須明確地給他們。

暫無
暫無

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

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