MongoDB массив запросов, содержащий текст для поиска - PullRequest
0 голосов
/ 22 марта 2012

У меня есть следующий запрос (MongoMapper / Rails): Card.where (: card_tags => {: $ all => search_tags}

Где card_tags - это массив строковых тегов, а search_tags - в массиве строк поиска. В настоящее время, если кто-то ищет «снег», результаты с тегом «сноуборд» не возвращаются.

Как я могу изменить этот запрос для поиска, содержит ли какая-либо из строк в card_tags какую-либо из строк в search_tags? Регулярные выражения приходят на ум, но не уверены в синтаксисе, учитывая, что это массивы ...

Спасибо

1 Ответ

1 голос
/ 22 марта 2012

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

Вы можете использовать регулярное выражение с индексом, только если вы «начинаете» с типа поиска,но я сомневаюсь, что вы хотите ограничиться этим.

Для полнотекстового поиска вам лучше использовать какой-либо внешний поисковый сервис для этого - например, Lucene, ElasticSearch или Solr.пост тоже: как запрос в mongoDB

...