[英]Handling special characters with lucene
我没有找到问题的答案,所以我决定写我的问题来寻求帮助。
我使用lucene索引计算机内存中的对象(它们仅存在于我的Java代码中)。 在处理代码时,我使用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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.