如何阻止 Lucene 标准分析器删除特殊字符
How to stop Lucene Standard Analyzer removing special characters
我在使用 Lucene 时遇到了一些困难,希望得到任何帮助。
我有一个自定义查询,它是使用 QueryParser.Parse 手动编写和解析的(此查询)。我正在使用版本 LUCENE_29 和 StandardAnalyzer。
在我的查询中,我有一个特殊字符(冒号),需要保留它:
+(Name:"test\:word" OR Business:"test\:word hello")
解析上述查询文本后的输出为:
+(Name:"test word" OR Business:"test word hello")
有没有人有任何建议,我尝试将一个空的停用词集合传递给 StandardAnalyzer 构造函数,但这没有任何效果,它仍然去掉了冒号。
谢谢。
你不能。 StandardAnalyzer 专门设计用于删除特殊字符。
答案是使用不去除特殊字符(例如 WhiteSpaceAnalyzer
)的分析器实现,或者基于现有的分词器和过滤器构建自定义分析器来满足您的需求。
请注意,您需要使用 WhiteSpaceAnalyzer
来 索引 您的带有这些特殊字符的数据,否则它们在查询时将不可用。
我在使用 Lucene 时遇到了一些困难,希望得到任何帮助。
我有一个自定义查询,它是使用 QueryParser.Parse 手动编写和解析的(此查询)。我正在使用版本 LUCENE_29 和 StandardAnalyzer。
在我的查询中,我有一个特殊字符(冒号),需要保留它:
+(Name:"test\:word" OR Business:"test\:word hello")
解析上述查询文本后的输出为:
+(Name:"test word" OR Business:"test word hello")
有没有人有任何建议,我尝试将一个空的停用词集合传递给 StandardAnalyzer 构造函数,但这没有任何效果,它仍然去掉了冒号。
谢谢。
你不能。 StandardAnalyzer 专门设计用于删除特殊字符。
答案是使用不去除特殊字符(例如 WhiteSpaceAnalyzer
)的分析器实现,或者基于现有的分词器和过滤器构建自定义分析器来满足您的需求。
请注意,您需要使用 WhiteSpaceAnalyzer
来 索引 您的带有这些特殊字符的数据,否则它们在查询时将不可用。