Apache Solr TermsComponent: Как предотвратить разбиение слов после одного символа.Например, "футболка" - PullRequest
2 голосов
/ 18 февраля 2012

Я пытаюсь получить автоматические предложения для поисковых запросов.Но я столкнулся с проблемой со словами, содержащими такие символы, как "-" и "&", которые разделяются после одного символа.

Пример:

/solr/terms/?terms=true&terms.fl=item&terms.limit=10&terms.sort=count&terms.prefix=t

<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">1</int>
    </lst>
    <lst name="terms">
        <lst name="item">
            <int name="top">11335</int>
            <int name="tshirt">10249</int>
            <int name="t">10156</int>
            <int name="trouser">4771</int>
            <int name="tight">1577</int>
        </lst>
    </lst>
</response>

Проблема заключается в футболка и т .«Т» появляется только в «футболке».Так как же мне запретить Solr расщеплять слова сразу после одного символа, если после него нет пробела.«футболка» должна разделиться - «футболка» и «h & m» не должны.

Спасибо за помощь!

Ответы [ 3 ]

3 голосов
/ 18 февраля 2012

Тип поля для элементов выглядит как текст с WordDelimiterFilterFactory , являющимся одним из фильтров в анализе.
WordDelimiterFilterFactory по умолчанию разделяется на разделители слов.
Таким образом, футболка сгенерирует два жетона футболки и футболки, и, следовательно, для вас появится термин t.

Если вы хотите использовать термины для автозаполнения, удалите или настройте WordDelimiterFilterFactory согласно требованию.
Вы можете использовать TextField с базовыми конфигурациями, как, например, с WhitespaceTokenizerFactory, и применять к нему нижние фильтры ascii, чтобы токены были наименее проанализированы и не выглядели фрагментированными.

2 голосов
/ 18 февраля 2012

Вы также можете добавить слова, которые вы не хотите разделять, добавив их в protwords.txt или сопоставив определенные символы в wdfftypes.txt, чтобы они не использовались для разделения терминов.

Также проверьтеэта ссылка для хорошего AutoSuggester http://www.cominvent.com/2012/01/25/super-flexible-autocomplete-with-solr/

1 голос
/ 18 февраля 2012

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

TermsComponent быстрый и довольно простой в использовании, но имеет следующие ограничения:

  • вы не можете применить фильтр к вашим предложениям;
  • у вас могут возникнуть проблемы с чувствительными к регистру запросами: например, если вы используете LowerCaseFilterFactory и индексируете слово Word, вы получите предложение, набрав только w, а не W. В основном вам нужно позаботиться о снижении запроса перед его отправкой в ​​solr, поскольку вы не можете применить токенайзер или фильтр к вашему запросу.

В зависимости от ваших требований, вы можете рассмотреть различные способы автоматического предложения с Solr. Различные способы создания авто-предложений с помощью статьи Solr должны быть полезны для правильного выбора.

...