【发布时间】:2019-09-18 16:19:58
【问题描述】:
调试 SOLR 过滤器很困难,因为您看不到结果。 从执行的测试看来,Analyzer 中的顺序似乎总是先运行 Tokenizer,然后运行 Filters,无论顺序如何XML。
可疑的原因,这里
<!-- all to lower case -->
<filter class="solr.LowerCaseFilterFactory"/>
<!-- first convert all to ASCII -->
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="false" />
<!-- all punctuation replaced by nothing -->
<filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z0-9\s]+)" replacement="" replace="all"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
这个想法是,例如,如果你有一个像 Ying-yang 这样的名字,它会折叠为 yingyang,如果我们愿意,我们可以搜索它。然而,这不适用于 StandardTokenizerFactory(我们没有搜索到 yingyang 的结果),但如果我们使用 KeywordTokenizer 则确实有效。这表明破折号导致了标记化。正则表达式应该删除了破折号。它确实与 KeywordTokenizer 一起工作的事实证明正则表达式工作正常。
那么是否有人知道 SOLR 中的分析器是否需要首先运行标记器是一个限制?网上所有的例子都先显示一个分词器,所以我不知道是否有人在分词之前尝试过过滤。
【问题讨论】:
标签: xml solr tokenize analyzer