solr PatternTokenizerFactory未拆分
我有以下标记器:solr PatternTokenizerFactory未拆分,solr,Solr,我有以下标记器: <analyzer type="index"> <charFilter class="solr.HTMLStripCharFilterFactory"/> <tokenizer class="solr.PatternTokenizerFactory" pattern="-|\\s+"/> <!-- more --> PatternTokenizer根本不分割字符串,而是将其作为一个字符串保留如何生成以空格或“-
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.PatternTokenizerFactory" pattern="-|\\s+"/>
<!-- more -->
PatternTokenizer根本不分割字符串,而是将其作为一个字符串保留如何生成以空格或“-”分隔的正则表达式?
solr文档()意味着我应该能够为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]
我做错了什么?您可以检查是否可以使用空格筛选器工厂和单词分隔符筛选器工厂 我认为这应该解决你的问题 在word delimiter筛选器工厂中,需要将属性generate word part设置为1。然后它会生成代币。。。比如说 输入就像Wi-Fi…它将生成Wi-Fi之类的令牌 在这里,您还可以通过设置另一个保留原始单词的属性来保留原始单词 如果只有-(连字符)需要删除或替换,则可以考虑上述内容 如果您需要删除或替换许多其他字符,则可以考虑使用模式。正确的语法是:
<tokenizer class="solr.PatternTokenizerFactory" pattern="[-\s]"/>
<tokenizer class="solr.PatternTokenizerFactory" pattern="[-\s]"/>