java - 如何阻止 Lucene 标准分析器删除特殊字符

标签 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 构造函数,但这没有任何效果,它仍然会去掉冒号。

谢谢。

最佳答案

你不能。 StandardAnalyzer 专为删除特殊字符而设计。

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

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

关于java - 如何阻止 Lucene 标准分析器删除特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46181533/

相关文章:

unicode - 在 Lucene 中使用变音符号索引和搜索法语文本

c# - 如何对多个(复杂结构)字段进行 RavenDB 查询并返回匹配的值?

c# - 写入后是否必须优化lucene索引?

asp.net - Lucene.net多字段搜索

c# - 有没有关于 Lucene.NET 的书籍

java - 如何在java中编写更复杂的正则表达式?

java - 无法在 Lucene+Tika 上返回带有重音符号的单词的结果

java - java中的errno是什么

java - 在 Java 中替换文本文件的第一行

java - 重写 ServletContextListener 的实现是一个好习惯吗?