Разница между IndexBasedSpellChecker и DirectSolrSpellChecker в Solr?

#solr #solrj #spell-checking #solrcloud

Вопрос:

Просматривая функцию проверки орфографии в Solr, я обнаружил следующие типы проверки орфографии solr

  1. Проверка орфографии на основе индексов
  2. DirectSolrSpellChecker
  3. Проверка орфографии на основе файлов

То, что я понял из определения solr docs «DirectSolrSpellChecker использует термины из индекса Solr без создания параллельного индекса, такого как IndexBasedSpellChecker«, заключается в том, что IndexbasedSpellChecker создает параллельный индекс, и нам нужно перестраивать этот параллельный индекс всякий раз, когда происходит изменение базового индекса, с помощью которого строится параллельный индекс

Но в DirectSolrSpellChecker не будет создан параллельный индекс, поэтому нет необходимости перестраивать его снова и снова

Мой вопрос заключается в том, что, если создание параллельного индекса является единственным отличием между этими двумя типами проверки орфографии, почему solr создал новый тип DirectSolrSpellChecker в выпуске Solr4.0, а не обновил средство проверки орфографии indexbased.

Поскольку они не обновили средство проверки с помощью IndexbasedSpellChecker, но создали новый тип под названием DirectSolrSpellChecker, мой вопрос :

  1. В чем преимущество построения параллельного индекса(как в IndexbasedSpellChecker) и преимущество проверки орфографии без построения параллельного индекса(как в DirectSolrSpellChecker)
  2. В чем фактическая разница между IndexbasedSpellChecker и DirectSolrSpellChecker
  3. Когда следует использовать IndexbasedSpellChecker и DirectSolrSpellChecker

Ответ №1:

Часть ответа содержится в вашем вопросе (единственная разница в том, что для одного требуется свой собственный индекс, а не другой), но я бы добавил :

  • В DirectSolrSpellChecker нем используются термины из индекса Solr, что означает, что его не нужно регулярно создавать, поскольку термины всегда обновляются в соответствии с терминами из основного индекса.

    Недостатком является то, что каждое изменение индекса solr будет стоить немного дороже, чтобы поддерживать эти термины, используемые проверяющим орфографию.

  • IndexbasedSpellChecker Напротив, он использует свой собственный индекс, построенный на основе основного индекса. Преимущество здесь в том, что вы можете решить, когда вносить изменения и перестраивать словарь.

    Предположим, вам нужна индексация в режиме реального времени, чтобы ваши пользователи могли очень быстро выполнять поиск и получать обновленные документы, что может быть очень удобно с точки зрения производительности. В этом случае наличие отдельного индекса для проверки орфографии позволяет предотвратить обновление словаря проверки орфографии при каждом изменении основного индекса (путем настройки buildOnCommit=false ), т. е. вы можете запустить перестройку по расписанию или вручную. Вы все еще можете настроить buildOnCommit=true перестройку индекса проверки орфографии при каждой фиксации.

    Недостатком является то, что для этого требуется больше места.