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
.
В чем проблема в конфигурации выше и помогите мне исправить это.
CharFilter не может пойти после токенизации. Он должен быть первым. CharFilter/Tokenizer/Filter. –
Я настраиваю поле в том же порядке, который вы указали. Проблема связана с подсветкой. Обновлен qn. – Babu