2014-01-16 4 views
0

У меня есть миллионы документов со следующими полями:
имя (строка), стартовая версия (int), конечная версия (int).Запрос диапазона в Solr

мне нужно запросить эффективно все записи, которые отвечает на запрос:
Выбрать все документы, где версия> = «начать версию» и версия < = «конец версия»

Запуск выше запрос взяли 50 -100 мс, в то время как аналогичный запрос по пометке каждой версии занял всего 15 мс.

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

+0

Что именно вы подразумеваете под «полным сканированием» здесь (в области solr)? И как вы измерили, что было «полное сканирование»? – rchukh

ответ

0

Я полагаю, что вы не найдете решения значительно лучше, чем Solr. Сценарий, который вы описываете, является одним из целевых сценариев в Solr. Я хотел бы проверить эти вещи, прежде чем принимать решение о том, как действовать:

  • Проверьте, есть ли у вас указатель в этом поле. Вы можете увидеть/определить индексы на Solr, используя его файлы конфигурации. Вы добавляете индексы в файл Schema.xml. В SolrConfig.xml вы также можете определить поведение индексов низкого уровня.

  • Проверьте, разрешено ли caching. Это может ускорить ваши реалистичные сценарии использования. Вы можете изменить соответствующие настройки в SolrConfig.xml.

  • Если после вышеуказанных проверок/изменений вы все еще не удовлетворены работой Solr, я бы проверил некоторое решение для базы данных NoSQL. Возможно, mongoDB, который является хранилищем, ориентированным на документ, обеспечивающим полную поддержку индекса, может работать лучше.

Надеюсь, я помог!

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