Ответ 1
Два параметра индекса очень разные.
-
При создании регулярного индекса в поле строки он индексирует целое значение в строке. В основном полезно для строк с одним словом (например, имя пользователя для логинов), где вы можете точно соответствовать.
-
Текстовый индекс на другом жестком уровне будет означать и блокировать содержимое поле. Таким образом, он разбивает строку на отдельные слова или и еще больше уменьшат их до своих стеблей, чтобы варианты того же слова будет соответствовать ( "говорить", соглашаясь "переговоры", "разговаривали" и "говорить", например, поскольку "разговор" - это основа всех трех). В основном полезно для истинного текста (предложения, параграфы и т.д.).
Текстовый поиск
Текстовый поиск поддерживает поиск содержимого строки в документах коллекция. MongoDB предоставляет оператор
$text
для выполнения текстового поиска в запросах и в агрегатных конвейерах.Процесс текстового поиска:
tokenizes and stems the search term(s) during both the index creation and the text command execution. assigns a score to each document that contains the search term in the indexed fields. The score determines the relevance of a document to a given search query.
Оператор
$text
может искать слова и фразы. Запрос совпадает на полных словах. Например, если поле документа содержит слово blueberry, поиск по термину blue не будет соответствовать документ. Однако поиск на чернике или чернике будет соответствовать. -
$regex
поиск может использоваться с регулярными индексами в строковых полях, обеспечить сопоставление шаблонов и поиск подстановочных знаков. Не ужасно эффективный пользователь индексов, но он будет использовать индексы, где он может:Если для поля существует индекс, то MongoDB соответствует регулярному выражение против значений в индексе, которое может быть быстрее, чем сбор сканирование. Дальнейшая оптимизация может произойти, если выражение является "префиксным выражением", что означает, что все потенциальные совпадения начинаются с одной и той же строки. Это позволяет MongoDB построить "диапазон" из этого префикса и соответствует только этим значениям из индекс, который попадает в этот диапазон.
http://docs.mongodb.org/manual/core/index-text/
http://docs.mongodb.org/manual/reference/operator/query/regex/