защищенные слова на побочный результат? - PullRequest
2 голосов
/ 09 сентября 2011

Я использую lucene с solr для индексации некоторых документов (новостей).Эти документы также имеют заголовок.Теперь я пытаюсь выполнить фасетный поиск по полю HEADLINE, чтобы найти термины с наибольшим количеством.Все это работает без проблем, включая список стоп-слов.Поле HEADLINE является многозначным полем.Я использую solr.StandardTokenizerFactory, чтобы разделить эти поля на отдельные термины (я знаю, это не лучшая практика, но это единственный способ, и он работает).

иногда токенизатор разделяет термины, которые не должныбыть разделенным, как 9/11 (который разделен на 9 и 11).Поэтому я решил использовать список «protword».«9/11» является частью этого списка прототипов.Но без изменений.

Вот часть из моего schema.xml

  <fieldType name="facet_headline" class="solr.TextField" omitNorms="true">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory" protected="protwords.txt"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.StopFilterFactory"
                    ignoreCase="true"
                    words="stopwords.txt"
                    enablePositionIncrements="true"
                protected="protwords.txt"
                />
        </analyzer>
   </fieldType>

, глядя на побочный эффект, я вижу много документов, связанных с "9/11", сгруппированных (ограненные) на «9» или «11», но никогда «9/11».

Почему это не работает?

Спасибо.

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Проблема в том, что вы не можете установить защищенные слова для любого фильтра / токенизатора, который вам нравится. Только определенные фильтры поддерживают эту функцию. Поэтому StandardTokenizer игнорирует ваши защищенные слова и в любом случае разбивает 9/11 на '9' '11'. Использование WhitespaceTokenizer гарантирует, что 9/11 не будет разделено.

Кроме того, он не похож на то, что StopFilterFactory также распознает защищенные слова (он просто отфильтровывает стоп-слова, такие как 'to' или 'и'. WordDelimiterFilterFactory использует защищенные слова. Поэтому вы можете поэкспериментировать с этим, чтобы видеть, может ли это помочь вам.

Лучший способ узнать, как анализируются ваши документы, - это использовать встроенную утилиту администрирования Solr , чтобы увидеть, как поле разбивается при индексации или запросе.

0 голосов
/ 15 сентября 2011

окончательное решение этой проблемы было выбрать solr.PatternTokenizerFactory

...