2012-04-17 3 views
3

Есть ли существенная причина, почему вы хотите использовать другой анализатор для индексирования и запроса? В примере файла schema.xml для text_en_splitting, например, анализатор индексов не выполняет расширение синонимов, но делает запрос. Это просто, чтобы держать индекс как можно меньше? Аналогично, для WordDelimiterFilterFactory анализатор индексов имеет catenateWords = «1» и catenateNumbers = «1», в то время как анализатор запросов имеет значение 0. Это просто, чтобы запрос был небольшим (быстрым)? Являются ли эти оптимизации действительно достойными обслуживания кошмаром двух анализаторов, которые «почти идентичны»?В Solr, зачем использовать разные анализаторы для запроса index vs?

Спасибо!

ответ

7

Вы не нуждаетесь в расширении синонимов по времени индекса и времени запроса, только один из этих двух. Подумайте об этом, если вы делаете это только при индексировании, все перечисленные слова будут дополнены всеми его синонимами.
Затем, когда вы запрашиваете индекс с любым из этих слов, вы будете соответствовать всем документам, которые подверглись расширению.

Нет необходимости расширять с обоих концов. И предлагается, чтобы вы делали это во время индекса, так как таким образом вы ускоряете время запроса.

IMHO, общее правило должно быть чипом везде, где вы можете (включая пару миллисекунд, от расширения синонимов во время запроса), чтобы улучшить работу пользователя намного лучше. И эти чипы могут существенно накапливаться.

Вы можете задать тот же вопрос, почему мы призываем к избыточности данных в документах.

+1

На самом деле это может быть сложнее, чем когда вы также имеете явные сопоставления в файле синонимов, например «i-pod, i pod => ipod». Затем вам нужно будет сделать расширение как по запросу, так и по индексу. –

Смежные вопросы