我没有找到问题的答案所以我决定写下我的问题以获得一些帮助。
我使用lucene索引计算机内存中的对象(它们只存在于我的java代码中)。在处理代码时,我使用WhitespaceAnalyzer
索引(使用objA/4
)字段。
当我想在索引编制后找到它时(也使用WhitespaceAnalyzer
),我的问题就开始了。
当我创建一个查询obj*
时,我找到所有以obj开头的对象 - 如果我创建一个查询objA/4
我也可以找到这个对象。
但是我不知道如何查找以objA/
开头的所有对象,当我创建查询objA/*
时,lucene正在将其更改为obja/*
并且什么也没找到。
我已经检查过,“/”不是特殊字符所以我不需要在它之前加上任何“\”。
所以我的问题是如何要求获取以objA/
开头的所有对象(例如 - objA/0
,objA/1
,objA/2
,objA/3
) ?
答案 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);