У меня есть документы в Solr/Lucene (3.x) со специальным полем facet_headline для копирования, чтобы иметь нефиксированное поле для огранки.solr not tokenizing защищенные слова
Иногда несколько слов принадлежат друг другу, и это должно обрабатываться/считаться одним словом, например «kim jong il».
Так заголовок «Суббота: Ким Чен Ир умер» следует разделить на:
Saturday
kim jong il
had
died
По этой причине я решил использовать защищенные слова (protwords), где я добавить kim jong il
, schema.xml
выглядит следующим образом.
<fieldType name="facet_headline" class="solr.TextField" omitNorms="true">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="\?|\!|\.|\:|\;|\,|\"|\(|\)|\\|\+|\*|<|>|([0-31]+\.)" />
<filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0"
protected="protwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true"
/>
</analyzer>
</fieldType>
Использование анализа solr похоже, что это не работает! Строка по-прежнему разделена на 6 слов. Похоже, файл protword.txt не используется, но если заголовок ТОЛЬКО содержит имя: kim jong il
все работает нормально, условия не разделяются.
Есть ли способ достичь моей цели: не разделить конкретные слова/группы слов?
Я удалил '\ s' из' PatternTokenizerFactory' в надежде, что 'WordDelimiterFilterFactory' расколоет документ на пробелы, закроет просрочки. Но после того, как я прочитал ваши анализы, я думаю, я понял проблему. поэтому я попробую вашу модификацию. минуточку. –
Забудьте о моем «решении», это, скорее всего, не сработает. Я неправильно понял, как «KeywordMarkerFilterFactory»; это только защитит ваши слова от последующего истощения. Я уточню свой ответ. – Chewie
> Забудьте о моем «решении» <я вижу - 'PatternTokenizerFactory' разделит термин до того, как будут обработаны какие-либо прожекторы. Правильно, 'KeywordMarkerFilterFactory' имеет значение для stemting –