Java 如何停止Lucene标准分析器删除特殊字符
我和Lucene之间一直有一些困难,如果有任何帮助,我将不胜感激 我有一个自定义查询,它是使用QueryParser.Parse手动编写和解析的(此查询)。我使用的是LUCENE_29版本和StandardAnalyzer 在我的查询中,我有一个特殊字符(冒号),需要保留:Java 如何停止Lucene标准分析器删除特殊字符,java,lucene,lucene.net,examine,query-analyzer,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 he
+(Name:"test\:word" OR Business:"test\:word hello")
解析上述查询文本后的输出为:
+(Name:"test word" OR Business:"test word hello")
如果有人有任何建议,我尝试将一个空的stop words集合传递给StandardAnalyzer构造函数,但是没有效果,它仍然去掉了冒号
谢谢。你不能。StandardAnalyzer是专门为删除特殊字符而设计的 答案是使用不剥离特殊字符(如
WhiteSpaceAnalyzer
)的Analyzer实现,或者基于现有标记化器和过滤器构建自定义分析器以满足您的需要
请注意,您需要使用
WhiteSpaceAnalyzer
使用这些特殊字符对数据进行索引,否则在查询时它们将不可用。您问了一个好问题。我和Lucene也有类似的问题,没有办法解决这个问题。Lucene在我们的网站上退休的部分原因是这个问题。@JohnH感谢您分享这个信息!仅供参考-LUCENE_29
只告诉我们您设置的版本兼容性,它没有告诉我们您使用的是什么LUCENE或LUCENE.net版本。您好,我使用了WhiteSpaceAnalyzer,在使用query.parse时,结果为:+(名称:test:word Name:“test:word hello”)-此查询有效,但我不理解为什么WhiteSpaceAnalyzer从名称字段中删除引号,但将其保留在业务字段中。有什么想法吗?你在索引期间使用过空白分析器吗?分析的数据需要用特殊字符写入索引,否则在查询时它们将不可用。