Solr CapitalizationFilterFactory не работает - PullRequest
0 голосов
/ 23 сентября 2011

Я полный нуб, когда дело доходит до solr, это моя первая конфигурация, и у меня возникают проблемы с правильной фильтрацией данных solr. Мы используем Solr 4.0, снимок 09-21-2011. То, что я хочу, это сделать заглавной первую букву каждого слова в различных областях. Данные, которые мы индексируем, будут иметь такие данные, как 'name' = 'STAR WARS'. Что я хочу, так это когда я запрашиваю данные, имя должно возвращаться как «Звездные войны», но возвращается как «Звездные войны»

Вот мои настройки

<fieldType name="text_capital" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>                
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.CapitalizationFilterFactory" onlyFirstWord="false" okPrefix="CVS"/>         
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
  <analyzer type="query">                      
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.CapitalizationFilterFactory" onlyFirstWord="false" okPrefix="CVS"/>                
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
</fieldType>

А вот и карта поля

<field name="name" type="text_capital" indexed="true" stored="true" />

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

Спасибо

-зач

1 Ответ

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

Значение, которое вы называете «возвращающимся», является сохраненным значением, которое всегда является дословным значением, которое вы указали в Solr при индексации.Токенизаторы, фильтры и т. Д. Влияют на индексированное значение *1005*, которое используется при поиске (и на условия запроса).Вы должны преобразовать сохраненное значение, которое вы получите, обратно в форму, которую вы хотите.

...