我想使用一个模式,其中在一个过滤器之后调用whitespace-tokenizer,之后应该应用所有其他过滤器:
<filter class="solr.SynonymFilterFactory" tokenizerFactory="solr.KeywordTokenizerFactory" synonyms="german/synonyms.txt" ignoreCase="true" expand="true"/>
<!-- Case insensitive stop word removal.
add enablePositionIncrements=true in both the index and query
analyzers to leave a 'gap' for more accurate phrase queries.
-->
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
splitOnCaseChange="1"
preserveOriginal="1"
/>
Solr仅在过滤器之间应用新顺序,但在每个过滤器之前调用标记器...
有人知道吗?
最好的问候,hijolan
答案 0 :(得分:2)
在默认过滤器之前运行标记生成器。它更像是这样 - 是方式,solr工作。但您可以在标记生成器之前添加特殊类型的过滤器,例如solr.MappingCharFilterFactory
。
我想说的是:它取决于过滤器,如果它在标记器之前有效。查看CharFilter:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#CharFilterFactories
如果您需要以更复杂的方式“过滤”这些字词,例如solr.WhitespaceTokenizerFactory
,请尝试使用其他标记程序,例如solr.PatternTokenizerFactory
(solr.PatternTokenizerFactory)