2
我正在尋找在Lucene中有 「等於」 運算符來實現,如:Lucene的BooleanQuery等於/在
return new TermQuery(new Term(getName(), getValue()));
對於像谷:的customerID:亞達-UT-08ec5de9-8813-4361-be88-55695ddfaa00
這是行得通的。
但是,如果我使用一個「in」運算符實現了一個布爾查例如;
final BooleanQuery booleanQuery = new BooleanQuery();
for (final String aValue : value) {
booleanQuery.add(new TermQuery(new Term(getName(), aValue)), BooleanClause.Occur.SHOULD);
}
也不會找到亞達-UT-08ec5de9-8813-4361-be88-55695ddfaa00
任何客戶大量的測試我假設之後,「亞達-UT-08ec5de9-的長度8813-4361-be88-55695ddfaa00'或破折號可能是問題。 (我使用令牌保存在數據庫中)使用BooleanQuery時。
任何線索?
編輯:有什麼奇怪的是: - 這正與 「中」(布爾查詢):25c20c21-bd88-4a6d-aa02-209b5fb6fb11 - 這是不是與它的工作:亞達-UT-08ec5de9- 8813-4361-be88-55695ddfaa00
發現的解決方案:Lucene的話被收錄爲小寫:)
嘗試在Query對象上調用'toString()',這會給你一個執行內容的文本表示,並且對於調試可能非常有用 – skaffman 2010-02-24 13:02:34
通常你應該在索引和解析時使用相同的分析器請求參數。降低過濾器是StandardAnalyzer的一部分。 – Yaroslav 2010-02-25 20:35:01
fyi - 如果您找到解決方案,最好將其發佈爲您自己問題的答案:-) – Justin 2010-04-23 08:09:13