2009-01-10 72 views
0

我有一個「描述」字段索引在Lucene.This字段包含書的描述。 如何使用BooleanQuery類在此字段上實現「所有這些單詞」功能? 例如,如果用戶輸入「暢銷書」,那麼它應該返回在其描述中包含所有這些詞的書。所有這些詞的功能

謝謝!

回答

1

有兩件得到這個工作:

  1. 您需要正確分析傳入的文件,從而使各個字標記化分別索引
  2. 用戶查詢需要被標記化,並將令牌與AND運營商相結合。

#1,也有一些分析儀和斷詞是come with Lucene的 - 已經在org.apache.lucene.analysis包一看。有很多不同語言的選項,詞幹,停用詞等等。

對於#2,還有很多隨Lucene一起提供的查詢解析器,主要在org.apache.lucene.queryParser包裝數量中。 MultiFieldQueryParser可能是對你有好處:要求每學期必須存在,只是叫

QueryParser.setDefaultOperator(QueryParser.AND_OPERATOR) 

Lucene in Action,雖然有幾個版本老了,依然是準確的分析和查詢解析的更多信息是非常有用的。

0

我相信如果你通過

BooleanQuery.add(Query, BooleanClause.Occur) 

添加所有查詢部分(每學期一個),並將其設置爲常數BooleanClause.Occur.MUST秒參數,那麼你應該得到你想要的。等效查詢語法爲「+ term1 + term2 + term3 ...」。