2013-04-29 4 views
0

У меня есть массив ключевых слов в каждом документе коллекции.Поиск ключевых слов в MongoDB

Этот встроенный массив может содержать до 15 слов в каждом документе.

В коллекции есть миллионы документов.

Пользователь будет нажимать только на одно ключевое слово, чтобы получить 20 лучших документов, имеющих такое же ключевое слово.

Должен ли я просто создать индекс ключа в этом поле или использовать Lucene для индексации этого ключевого поля?

Какова эффективность поиска ключевых слов MongoDB по индексу массива?

Это кажется естественным выбором, поскольку Lucene/Solr кажется излишним.

Любые комментарии по этому вопросу, прежде чем я его выбрал?

+2

Я думаю, вам нужно будет протестировать его, чтобы узнать, что лучше подходит для ваших нужд. – WiredPrairie

ответ

0

Вы можете добавить memcache на свой серверный код, так как то, что вам кажется, это сделать много чтений. Это, конечно же, будет содержать много оперативной памяти, поскольку вы храните информацию в памяти, но извлечение будет супер-сверхбыстро, так как его доступ к массиву хешей:>

Вы сказали, что миллионы, это может съесть несколько сотни мегабайт: | В зависимости от самих документов.

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

Этот массив 1..15 слов придется перейти от:

Doc 1: {_id:123, keys:[ key0, key1...keyN]} 
Doc 2: {_id:456, keys:[ key0, key1...keyM]} 

в

Memcache = []; 
Memcache[ key0 ] = [ Doc 1, Doc 2 ]; 
Memcache[ key1 ] = [ Doc 1, Doc 2 ]; 
... 
Memcache[ keyN ] = [ Doc 1 ]; 
... 
Memcache[ keyM ] = [ Doc 2 ]; 

Итак, когда вы ищете для первых 20 документов для Keyz, вы просто делаете Memcache [Keyz ] и ограничить результаты до 20, я ожидаю, что сотни/тысячи Doc.

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