2

我在使用 Lucene 时遇到了一些困难,希望能提供任何帮助。

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

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

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

解析上述查询文本后的输出为:

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

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

谢谢你。

4

1 回答 1

1

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

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

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

于 2017-09-12T23:26:42.423 回答