【问题标题】:How to use a tokenizer between filters in solr?如何在 solr 的过滤器之间使用分词器?
【发布时间】:2011-09-12 12:54:09
【问题描述】:

我想使用一种架构,其中在一个过滤器之后调用空白标记器,然后应用所有其他过滤器:

<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

【问题讨论】:

    标签: filter solr tokenize


    【解决方案1】:

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

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

    如果您需要以更复杂的方式“过滤”术语,例如 solr.WhitespaceTokenizerFactory,请尝试使用不同的标记器,例如 solr.PatternTokenizerFactory (solr.PatternTokenizerFactory)

    【讨论】:

    • 我已经尝试使用另一个标记器,如 KeywordTokenizerFactory,然后应用同义词列表。除了同义词过滤器之外的所有其他过滤器都会获得额外的 Whitespace-Tokenizer 分配。那行得通,我的同义词操作正确。但是,如果我查看分析器,我还会通过空格将整个文本再次拆分为拆分字符串。例如:Nullam consequat, sem vitae => Nullam consequat, sem vitae |纳拉姆 |后果 |扫描仪 |简历
    • 不确定,如果我理解正确的话:KeywordTokenizerFactoryshould 处理您的单词/术语而不做任何更改。 solr.WordDelimiterFilterFactory 可能会将您的单词/术语拆分为额外的空白。看看solr.WordDelimiterFilterFactorymanual:split on intra-word delimiters (all non alpha-numeric characters). ...其中空格不是字母数字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多