簡體   English   中英

使用Lucene搜索多個字段

[英]Searching multiple fields with Lucene

我正在嘗試實施的搜索遇到一些麻煩。 我需要用戶能夠將搜索查詢輸入到Web界面中,並且后端Java需要在許多字段中搜索查詢。 這方面的一個例子可能是最好的:

假設我有一個包含“Person”對象的List。 假設每個對象包含兩個關於此人的字符串字段:

FirstName:  Jack
Surname:    Smith

FirstName   Mary
Surname:    Jackson

如果用戶輸入“jack”,我需要搜索以匹配兩個對象,第一個在Surname上,第二個在FirstName上。

我一直在尋找使用MultiFieldQueryParser,但無法正確設置字段。 任何有關這方面的幫助或指向一個好的教程將不勝感激。

正如你所說, MultiFieldQueryParser就是你想要的。

確保:

  • 始終使用字段名稱
  • 兩個字段以及查詢解析器上都使用相同的Analyzer
  • 默認情況下你不會找到部分單詞,所以如果你搜索jack你將找不到jackson (在這種情況下你可以搜索jack* 。)

關於字段名稱,我總是為我的字段名稱設置一個enum ,然后在將字段名稱傳遞給Lucene時使用例如MyFieldEnum.firstname.name() ,這樣如果我犯了拼寫錯誤,編譯器就可以捕獲它,它也是一個放置Javadoc的好地方,以便您可以查看字段的用途,還可以在Lucene文檔中查看要支持的完整字段列表。

暫無
暫無

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

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