1
你好,大家好我有一個問題:)Lucene的BooleanQuery.Builder構建不起作用
我創建了一個BooleanQuery像這樣:
BooleanQuery.Builder qry = new BooleanQuery.Builder();
qry.add(new TermQuery(new Term("Name", "Anna")), BooleanClause.Occur.SHOULD);
如果我做這樣的搜索現在:
TopDocs docs = searcher.search(qry.build(), hitsPerPage);
它獲得零結果?但如果我使用此代碼:
TopDocs docs = searcher.search(parser.parse(qry.build().toString()), hitsPerPage);
然後我得到正確的結果?你能解釋一下爲什麼我必須再解析它嗎?
我使用的版本5.5.0和名稱是一個TextField
啊好吧謝謝非常多:)我在哪裏可以設置忽略大小寫? – Montezuma
Lucene並沒有真正以這種方式工作,您可以在某處設置忽略大小寫。這一切都取決於你的分析儀。大多數分析器都包含一個小寫標記過濾器,它將小寫所有內容。您必須確保您的查詢通過兼容的分析器(理想情況下是同一個分析器)運行,以便生成匹配的令牌。 TermQuery不使用任何分析器,因此您必須事先執行該步驟,例如通過使用查詢解析器,它通過分析器運行的東西(實際上沒有首先構建布爾查詢)。 – knutwalker