2010-11-05 67 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);