如何阻止Lucene Standard Analyzer删除特殊字符

时间:2017-09-12 16:32:32

标签: java lucene lucene.net examine query-analyzer

我一直在与Lucene有一些困难,并希望得到任何帮助。

我有一个自定义查询,使用QueryParser.Parse手动编写和解析(此查询)。我使用的是LUCENE_29版本和StandardAnalyzer。

在我的查询中,我有一个特殊字符(冒号),需要保留:

+(Name:"test\:word" OR Business:"test\:word hello")

解析上面的查询文本后的输出是:

+(Name:"test word" OR Business:"test word hello")

有没有人有任何建议,我尝试将一个空的停止词集合传递给StandardAnalyzer构造函数但是没有效果它仍然会删除冒号。

谢谢。

1 个答案:

答案 0 :(得分:1)

你不能。 StandardAnalyzer专门用于删除特殊字符。

答案是使用不剥离特殊字符(例如WhiteSpaceAnalyzer)的Analyzer实现,或者基于现有的标记器和过滤器构建自定义分析器以满足您的需求。

请注意,您需要使用WhiteSpaceAnalyzer 索引您的数据与这些特殊字符,否则他们将无法在查询时使用。