2010-11-05 66 views
1

我還沒有找到我的問題的答案,所以我決定寫我的問題來獲得一些幫助。用lucene處理特殊字符

我使用lucene索引計算機內存中的對象(它們只存在於我的java代碼中)。在處理代碼I索引時(使用WhitespaceAnalyzer)值爲objA/4的字段。

我的問題開始時,我想在索引後找到它(也使用WhitespaceAnalyzer)。

當我創建一個查詢obj*,我發現所有以obj開頭的對象 - 如果我創建一個查詢objA/4我也可以找到這個對象。

但是我不知道如何找到所有以objA/開頭的對象,當我創建查詢時objA/* lucene將它更改爲obja/*並且什麼都沒發現。

我檢查過「/」不是特殊字符,所以我不需要任何「\」在它之前。

所以我的問題是如何要求獲得與objA/開頭的所有對象(例如 - objA/0objA/1objA/2objA/3)?

回答

1

你使用QueryParser.escape(String)來正確地轉義一切嗎?

-1

的代碼我使用:

String node = "objA/*"; 

Query node_query = MultiFieldQueryParser.parse(node, "nodeName", new WhitespaceAnalyzer()); 

BooleanQuery bq = new BooleanQuery(); 

bq.add(node_query, BooleanClause.Occur.MUST); 

System.out.println("We're asking for - " + bq); 

IndexSearcher looker = new IndexSearcher(rep_index); 

Hits hits = looker.search(bq);