Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何停止Lucene标准分析器删除特殊字符_Java_Lucene_Lucene.net_Examine_Query Analyzer - Fatal编程技术网

Java 如何停止Lucene标准分析器删除特殊字符

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

我和Lucene之间一直有一些困难,如果有任何帮助,我将不胜感激

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

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

+(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从名称字段中删除引号,但将其保留在业务字段中。有什么想法吗?你在索引期间使用过
空白分析器吗?分析的数据需要用特殊字符写入索引,否则在查询时它们将不可用。