使用lucene处理特殊字符

时间:2010-11-05 13:14:16

标签: java indexing lucene special-characters

我没有找到问题的答案所以我决定写下我的问题以获得一些帮助。

我使用lucene索引计算机内存中的对象(它们只存在于我的java代码中)。在处理代码时,我使用WhitespaceAnalyzer索引(使用objA/4)字段。

当我想在索引编制后找到它时(也使用WhitespaceAnalyzer),我的问题就开始了。

当我创建一个查询obj*时,我找到所有以obj开头的对象 - 如果我创建一个查询objA/4我也可以找到这个对象。

但是我不知道如何查找以objA/开头的所有对象,当我创建查询objA/*时,lucene正在将其更改为obja/*并且什么也没找到。

我已经检查过,“/”不是特殊字符所以我不需要在它之前加上任何“\”。

所以我的问题是如何要求获取以objA/开头的所有对象(例如 - objA/0objA/1objA/2objA/3) ?

2 个答案:

答案 0 :(得分:1)

您使用QueryParser.escape(String)正确逃避一切吗?

答案 1 :(得分:-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);