Я пытаюсь преобразовать 15.6"
поисковых запросов в 15.6 inch
. Идея заключалась в том, чтобы сначала заменить 15.6"
на 15.6 "
, а затем сопоставить "
с правилом синонимов " => inch
. Я создал определение типа:
<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern='^([0-9]+([,.][0-9]+)?)(")$' replacement="$1 $3" />
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" />
</analyzer>
</fieldType>
но это не работает! Если я ввожу 15.6"
, я получаю 15.6 "
, но когда я ввожу 15.6 "
, я получаю то, что хочу - 15.6 inch
.
Почему это не работает? Я что-то пропустил?
РЕДАКТИРОВАТЬ:
$1 inch
в этом случае, вместо того, чтобы использовать синонимы? Используйте страницуAnalysis
в Solr's Admin, чтобы точно увидеть, как токены обрабатываются для каждого шага — она должна быть в состоянии сказать вам, как все выглядит после выполнения фильтра patternreplacefilter. Похоже, что вместо подгрупп есть подгруппы, поэтому$3
, вероятно, неверно, если вы не переместите окончание)
). - person MatsLindh   schedule 29.01.2020"
. С другой стороны, описанный выше подход кажется совершенно логичным, за исключением того, что он не работает, поэтому я хотел знать, есть ли за этим какие-то рассуждения... - person Maputo   schedule 29.01.202015.6 "
по-прежнему остается одним токеном, и явно15.6 "
не совпадает с"
. Есть ли способ обойти это? - person Maputo   schedule 29.01.2020