簡體   English   中英

使用Hibernate Search時如何在所有字段中進行搜索

[英]How to search across all fields when using Hibernate Search

我剛剛將搜索實現更改為Hibernate Search 4.5.1.FINAL。 我正在嘗試創建一個在所有字段中搜索單詞的查詢。 但是,我無法找到有關如何實現這一目標的任何信息。 在ElasticSearch中,您有一個_all字段。 http://www.elasticsearch.org/guide/zh-CN/elasticsearch/reference/current/mapping-all-field.html

我提供了一個文本字段,用戶可以在其中輸入任何內容,然后得到結果。 但是我不知道他/她想搜索哪些字段。

如何在Hibernate Search中做到這一點? 除了常規的@Field注釋外,我不想添加@Field(name="_all")注釋。 你怎么做到這一點?

似乎Hibernate Search本身並不支持此功能(因為Lucene的人也不建議這樣做)。

似乎只有一種選擇已經存在,而您拒絕使用; 用名稱注釋所有字段:

@Fields({
  @Field(index = Index.TOKENIZED),
  @Field(name = "ALL", index = Index.TOKENIZED)
})
//your variable declaration

https://stackoverflow.com/a/25324486/115835中所建議,一種選擇是確保屬性也被索引到共享字段中。

替代方法是以所有字段為目標的方式來構建查詢。 用戶仍然只能看到一個輸入字段,但是您可以在幕后針對您喜歡的字段構建布爾查詢(需要注意分析器和其他影響搜索字段的設置)。 您甚至可以使用元數據API,該API允許您以編程方式獲取已配置字段的列表。 我認為我更喜歡這種方法而不是其他領域。

暫無
暫無

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

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