Apache Lucene QueryParser.parse не использует Analyzer в FuzzyQuery

Следует отметить, что вы можете экспортировать переменную, а затем изменить значение. Измененное значение переменной будет доступно для дочерних процессов. После того как экспорт был установлен для переменной, вы должны сделать export -n <var>, чтобы удалить свойство.

$ K=1
$ export K
$ K=2
$ bash -c 'echo ${K-unset}'
2
$ export -n K
$ bash -c 'echo ${K-unset}'
unset
1
задан user3078694 16 January 2019 в 22:26
поделиться

1 ответ

Проблема в том, что долгое время QueryParser не обрабатывал запросы должным образом (не применял анализаторы), если они были FuzzyQuery , WildcardQuery , PrefixQuery , RegexpQuery

Для решения этой проблемы у Lucene был класс AnalyzingQueryParser , который переопределяет стандартный QueryParser Lucene, так что Fuzzy-, Prefix- , Range- и WildcardQuerys также передаются через данный анализатор, но подстановочные символы * и? не удаляйся из условий поиска.

Однако, начиная с Lucene 7.4, эта функциональность была объединена в QueryParserBase , которые теперь имеют соответствующие методы для обработки этих запросов, такие как:

protected Query getFuzzyQuery(String field,
                              String termStr,
                              float minSimilarity)

Итак, вместо создания класса QueryParser, вы должны создать ComplexPhraseQueryParser, который переопределяет этот метод, и вызовите parse отсюда.

0
ответ дан Mysterion 16 January 2019 в 22:26
поделиться
Другие вопросы по тегам:

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