2013-06-25 3 views

ответ

7

По существу, потому что мы удерживаем массив 200 единиц в памяти, когда мы переходим через все хиты, сохраняя лучшие 200 очков забивания. Стандартный вид просто передает все строки между начальной и конечной точкой. Цель поиска состоит в том, чтобы обычно найти иглу в стоге сена, поэтому вы обычно не получаете тысячи результатов (сравните с Google, который перебирает страницу на страницу 500?). Если вы не найдете то, что хотите, уточните свой поиск и посмотрите еще раз.

Бывают случаи, когда извлекаются все совпадения имеют смысл (и мы можем передавать это в том порядке, в котором мы их находим, поэтому нет проблемы с ОЗУ). Это функция, которую мы можем (и должны) добавлять, но в настоящее время она недоступна.

+0

Я использую поисковые индексы (в сочетании с анализатором ключевых слов/полей) везде, чтобы компенсировать очень скудную возможность запросов CouchDB, поэтому именно поэтому. –

4

Следует также отметить, что API-интерфейс _view (он же «mapreduce») принципиально отличается от поиска из-за упорядочения результатов на диске. Материализованные представления сохраняются в деревьях CouchDB b +, поэтому они по существу сортируются по ключу. Это позволяет использовать эффективные запросы диапазона (ключ запуска/завершения) и делает лимитный/пейджинг тривиальным. Однако это также означает, что вам нужно заказывать строки представления на диске, что ограничивает типы логических запросов, которые вы можете выполнять против материализованных представлений. Здесь поиск помогает, но Боб (он же «Эксперт Lucene») отмечает ограничения.

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