Как использовать токенайзер между фильтрами в solr? - PullRequest
0 голосов
/ 12 сентября 2011

Я хочу использовать схему, в которой символ пробела вызывается после одного фильтра, и после этого должны применяться все остальные фильтры:

<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 только применяет новый порядок между фильтрами, но токенизатор вызывается перед каждым фильтром ...

Кто-нибудь знает?

С наилучшими пожеланиями, хиджолан

1 Ответ

2 голосов
/ 12 сентября 2011

Запустить токенизатор до того, как фильтр будет установлен по умолчанию.Это больше похоже на это - так работает solr.Но вы можете добавить специальный вид фильтров перед токенизатором, например solr.MappingCharFilterFactory.

Что я пытаюсь сказать: это зависит от фильтра, если он работает до токенизатора.Посмотрите на CharFilter: http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#CharFilterFactories

Если вам нужно «фильтровать» термины более сложным способом, как solr.WhitespaceTokenizerFactory, попробуйте использовать другой токенизатор, например solr.PatternTokenizerFactory (solr.PatternTokenizerFactory )

...