簡體   English   中英

Lucene短語查詢不起作用

[英]Lucene Phrase Query not working

我有一個字符串address = "456 SOME STREET";

我必須在Lucene中進行搜索,為此我創建了索引

StringField address = new StringField(Constants.ORGANIZATION_ADDRESS, address,Field.Store.YES);

我正在使用短語查詢使用以下代碼搜索此字符串

String[] tokens = address.split("\\s+");
PhraseQuery addressQuery = new PhraseQuery(Constants.ORGANIZATION_ADDRESS, tokens);
finalQuery.add(addressQuery, BooleanClause.Occur.MUST);

但是它沒有給我任何結果,我也嘗試過TermQuery,但是那也不起作用。 非常感謝您的幫助,因為我現在嘗試了很多選擇,但無法找出問題所在

我也在下面嘗試了索引:

doc.add(new StringField(Constants.ORGANIZATION_ADDRESS, address,Field.Store.YES));

使用術語查詢進行搜索:

fullAddressExact= fullAddressExact.toLowerCase();
TermQuery tq = new TermQuery(new Term(Constants.ORGANIZATION_ADDRESS,fullAddressExact));
finalQuery.add(tq, BooleanClause.Occur.MUST);

即使這樣也沒有任何結果。 我打算獲得完全匹配

在為文檔建立索引時,您可能應該使用TextField ,而不是StringField

StringField按原樣存儲字符串,而不會將其分成令牌,因此在您的示例中,索引將包含"456 SOME STREET" 僅帶有該術語的TermQuery可以檢索它(或PrefixQuery )。

TextField是索引文本時的標准字段,它將文本拆分為令牌(使用Tokenizer)並分別索引單詞,在您的示例中456SOMESTREET都可用於查找文檔。 在這里閱讀有關它的更多信息(有點陳舊,但相關)。

暫無
暫無

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

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