#solr #solrj #spell-checking #solrcloud
Вопрос:
Просматривая функцию проверки орфографии в Solr, я обнаружил следующие типы проверки орфографии solr
- Проверка орфографии на основе индексов
- DirectSolrSpellChecker
- Проверка орфографии на основе файлов
То, что я понял из определения solr docs «DirectSolrSpellChecker использует термины из индекса Solr без создания параллельного индекса, такого как IndexBasedSpellChecker«, заключается в том, что IndexbasedSpellChecker создает параллельный индекс, и нам нужно перестраивать этот параллельный индекс всякий раз, когда происходит изменение базового индекса, с помощью которого строится параллельный индекс
Но в DirectSolrSpellChecker не будет создан параллельный индекс, поэтому нет необходимости перестраивать его снова и снова
Мой вопрос заключается в том, что, если создание параллельного индекса является единственным отличием между этими двумя типами проверки орфографии, почему solr создал новый тип DirectSolrSpellChecker в выпуске Solr4.0, а не обновил средство проверки орфографии indexbased.
Поскольку они не обновили средство проверки с помощью IndexbasedSpellChecker, но создали новый тип под названием DirectSolrSpellChecker, мой вопрос :
- В чем преимущество построения параллельного индекса(как в IndexbasedSpellChecker) и преимущество проверки орфографии без построения параллельного индекса(как в DirectSolrSpellChecker)
- В чем фактическая разница между IndexbasedSpellChecker и DirectSolrSpellChecker
- Когда следует использовать IndexbasedSpellChecker и DirectSolrSpellChecker
Ответ №1:
Часть ответа содержится в вашем вопросе (единственная разница в том, что для одного требуется свой собственный индекс, а не другой), но я бы добавил :
- В
DirectSolrSpellChecker
нем используются термины из индекса Solr, что означает, что его не нужно регулярно создавать, поскольку термины всегда обновляются в соответствии с терминами из основного индекса.Недостатком является то, что каждое изменение индекса solr будет стоить немного дороже, чтобы поддерживать эти термины, используемые проверяющим орфографию.
IndexbasedSpellChecker
Напротив, он использует свой собственный индекс, построенный на основе основного индекса. Преимущество здесь в том, что вы можете решить, когда вносить изменения и перестраивать словарь.Предположим, вам нужна индексация в режиме реального времени, чтобы ваши пользователи могли очень быстро выполнять поиск и получать обновленные документы, что может быть очень удобно с точки зрения производительности. В этом случае наличие отдельного индекса для проверки орфографии позволяет предотвратить обновление словаря проверки орфографии при каждом изменении основного индекса (путем настройки
buildOnCommit=false
), т. е. вы можете запустить перестройку по расписанию или вручную. Вы все еще можете настроитьbuildOnCommit=true
перестройку индекса проверки орфографии при каждой фиксации.Недостатком является то, что для этого требуется больше места.