[英]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.