Использование RethinkDB для полнотекстового поиска

В настоящее время я работаю над веб-приложением, в котором в идеале я мог бы поддерживать панель поиска в документах, которые будут храниться для пользователей. Каждый из этих документов будет небольшим отрывком до статьи приличного размера. (Я не думаю, что какие-либо документы будут больше, чем несколько КБ текста для целей поиска). Когда я читал о правильных способах использования RethinkDB, одна из битов информации, которая вызвала у меня беспокойство это производительность выполнения чего-то вроде фильтрации неиндексированных данных, когда я видел, как люди упоминали несколько минут, потраченных на один из этих вызовов. Учитывая, что я ожидаю, что в долгосрочной перспективе будет не менее 10 000+ документов (а в действительно долгосрочной перспективе 100 000+, 1 000 000+ и т. д.), есть ли способ найти эти документы в способ, который имеет менее секунды (предпочтительно в 10-х миллисекундах) времени отклика в стандартном API RethinkDB? Или мне придется придумать отдельную схему, позволяющую осуществлять быстрый поиск за счет грамотного использования индексов? Или мне лучше использовать другую базу данных, которая предоставляет такую ​​возможность?


person Freezerburn    schedule 21.07.2015    source источник


Ответы (1)


Если вы не используете индекс, ваш запрос должен будет просматривать каждый документ в вашей таблице, поэтому он будет работать медленнее по мере увеличения вашей таблицы. 10 000 документов должны быть разумными для поиска на быстром оборудовании, но вы, вероятно, не сможете сделать это за 10 миллисекунд, а поиск по миллионам документов, вероятно, будет медленным.

Вы можете изучить elasticsearch как способ сделать это: http://www.rethinkdb.com/docs/elasticsearch/

person mlucy    schedule 21.07.2015
comment
Поиск по каждому документу — это основное желание, которое у меня было для функции поиска, поэтому у меня была проблема с производительностью. Я не знал о функциях elasticsearch, которые идеально подходят для моего варианта использования, спасибо! - person Freezerburn; 21.07.2015
comment
Всего 15 минут назад добавили тег rethinkdb в избранное, и он уже приносит дивиденды. Полнотекстовый поиск — это проблема, которая все еще не решена для меня, но приятно знать, что ее ждет решение. - person chucksmash; 07.09.2015