如何在solr中的过滤器之间使用标记器?

时间:2011-09-12 12:54:09

标签: filter solr tokenize

我想使用一个模式,其中在一个过滤器之后调用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

1 个答案:

答案 0 :(得分:2)

在默认过滤器之前运行标记生成器。它更像是这样 - 是方式,solr工作。但您可以在标记生成器之前添加特殊类型的过滤器,例如solr.MappingCharFilterFactory

我想说的是:它取决于过滤器,如果它在标记器之前有效。查看CharFilter:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#CharFilterFactories

如果您需要以更复杂的方式“过滤”这些字词,例如solr.WhitespaceTokenizerFactory,请尝试使用其他标记程序,例如solr.PatternTokenizerFactorysolr.PatternTokenizerFactory