用lucene处理特殊字符
问题描述:
我还没有找到我的问题的答案,所以我决定写我的问题来获得一些帮助。用lucene处理特殊字符
我使用lucene索引计算机内存中的对象(它们只存在于我的java代码中)。在处理代码I索引时(使用WhitespaceAnalyzer
)值为objA/4
的字段。
我的问题开始时,我想在索引后找到它(也使用WhitespaceAnalyzer
)。
当我创建一个查询obj*
,我发现所有以obj开头的对象 - 如果我创建一个查询objA/4
我也可以找到这个对象。
但是我不知道如何找到所有以objA/
开头的对象,当我创建查询时objA/*
lucene将它更改为obja/*
并且什么都没发现。
我检查过“/”不是特殊字符,所以我不需要任何“\”在它之前。
所以我的问题是如何要求获得与objA/
开头的所有对象(例如 - objA/0
,objA/1
,objA/2
,objA/3
)?
答
你使用QueryParser.escape(String)
来正确地转义一切吗?
答
的代码我使用:
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);