【发布时间】:2016-03-08 04:51:39
【问题描述】:
我有以下分词器:
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.PatternTokenizerFactory" pattern="-|\\s+"/>
<!-- more -->
当我进入我的 solr 服务器上的分析页面时,我可以看到有一个 PatternTokenizer,并且 PatternTokenizer 正在使用指定的模式。不幸的是,如果我分析一些简单的东西,比如:
1/2 test
PatternTokenizer 根本不拆分字符串,而是将其保留为一个字符串。 如何创建一个在空格或“-”上拆分的正则表达式?
solr 文档 (https://lucene.apache.org/core/4_1_0/analyzers-common/org/apache/lucene/analysis/pattern/PatternTokenizerFactory.html) 暗示我应该能够给 PatternTokenizerFactory 一个正则表达式,它会使用该正则表达式拆分文档。我检查了常规 Java 程序中的正则表达式:
import java.util.Arrays;
public class RegexTest {
public static void main(String[] args){
String test = "a b c-d/e";
String[] rs = test.split("-|\\s+");
System.err.println(Arrays.toString(rs));
}
}
并得到以下输出,这表明正则表达式没有任何问题。
[a, b, c, d/e]
我做错了什么?
【问题讨论】:
标签: solr