我一直在与Lucene有一些困难,并希望得到任何帮助。
我有一个自定义查询,使用QueryParser.Parse手动编写和解析(此查询)。我使用的是LUCENE_29版本和StandardAnalyzer。
在我的查询中,我有一个特殊字符(冒号),需要保留:
+(Name:"test\:word" OR Business:"test\:word hello")
解析上面的查询文本后的输出是:
+(Name:"test word" OR Business:"test word hello")
有没有人有任何建议,我尝试将一个空的停止词集合传递给StandardAnalyzer构造函数但是没有效果它仍然会删除冒号。
谢谢。
答案 0 :(得分:1)
你不能。 StandardAnalyzer专门用于删除特殊字符。
答案是使用不剥离特殊字符(例如WhiteSpaceAnalyzer
)的Analyzer实现,或者基于现有的标记器和过滤器构建自定义分析器以满足您的需求。
请注意,您需要使用WhiteSpaceAnalyzer
索引您的数据与这些特殊字符,否则他们将无法在查询时使用。