2016-09-07 19 views
1
удаления информации настройки

I поле с типом настроенного какSolr patternreplacefilterfactory дает значение от

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
      <charFilter class="solr.PatternReplaceCharFilterFactory" 
       pattern="#(\w+)" replacement="HTAG.$1 $1"/> 
      <tokenizer class="solr.UAX29URLEmailTokenizerFactory"/> 
      <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      </analyzer> 
      <analyzer type="query"> 
       <charFilter class="solr.PatternReplaceCharFilterFactory" 
       pattern="#(\w+)" replacement="HTAG.$1"/> 
      <tokenizer class="solr.UAX29URLEmailTokenizerFactory"/> 
      <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      </analyzer> 
     </fieldType> 

Моей целью индексировать оба слово и #words. Так что #usopen будет проиндексирован как для usopen, так и для #usopen.

И запрос с параметрами в дополнение к hl факторов как hl.fl=text&hl.fragsize=0&hl.simple.pre=<tag>hl.simple.post=</tag>&hl.requireFieldMatch=true.

Когда я запросить usopen, выделив текстовое значение, показанное в качестве #usope<tag>n</tag> и при запросе #usopen, текстовое значение, как показано <tag>usope</tag>n.

В чем проблема в конфигурации выше и помогите мне исправить это.

+0

CharFilter не может пойти после токенизации. Он должен быть первым. CharFilter/Tokenizer/Filter. –

+0

Я настраиваю поле в том же порядке, который вы указали. Проблема связана с подсветкой. Обновлен qn. – Babu

ответ

0

CharFilter, скорее всего, изменяет смещения в индексированной строке, которые затем не совпадают с оригиналом.

Попробуйте вместо этого использовать TokenFilter (PatternReplaceFilterFactory).

Кроме того, может иметь смысл просто нормализовать # something => что-то во время индексирования и поиска, а не пытаться сохранить обе формы. Пока это соответствует, это все, о чем вы заботитесь.

+0

Но мне нужно индексировать ключевое слово вместе с hashtag. Существует ли другое решение? – Babu

+0

Зачем вам нужно индексировать версию хэштега? Индексированное представление доступно только для того, чтобы выполнить поиск. Пользователи обычно не видят этого (исключение - огранка). –

+0

для поддержки поиска hashtag. Я пытаюсь проиндексировать твиты и точный поиск любых событий хэштега – Babu