Использование нескольких токенизаторов в Solr

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

В данный момент у меня настроена схема Solr, которая была изменена, чтобы я мог запрашивать и возвращать результаты независимо от того, в каком они случае. Так что, если я буду искать iPOd, я увижу, что iPod вернулся. Код для этого:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
  </analyzer>
...
</fieldType>

Я нашел этот код, который позволит нам выполнить частичный запрос на совпадение слов, но я не думаю, что у меня может быть два токенизатора в одном поле. Или есть способ объединить их?
Или есть другой способ выполнить эту задачу?

10
задан Matt Dell 9 January 2012 в 13:17
поделиться

1 ответ

Объявите другой fieldType (то есть другое имя), у которого есть токенизатор NGram, затем объявите поле, которое использует fieldType с NGram и другое поле со стандартным "текстовым" fieldType. Используйте copyField, чтобы скопировать один в другой. См. Индексирование одних и тех же данных в нескольких полях .

10
ответ дан 3 December 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: