MongoDB выполняет логический ИЛИ поиск терминов, если не указано как фраза. Таким образом, поиск по «быстрой коричневой собаке» вернет только те документы, в текстовой указатель которых включена запись, содержащая фразу «быстрая коричневая собака», тогда как при поиске по «быстрой» коричневой «собаке» вернуть документы, в которых есть хотя бы одно из этих слов.
я очень смущен этим поведением. Это кажется непоследовательным и странным, особенно с учетом того, что я читал, что Mongo не должен поддерживать частичные условия поиска в полнотекстовом поиске. Я использую версию 3.4.7 Mongo DB Community Server. Я делаю эти тесты из оболочки Монго.
Итак, у меня есть коллекция БД Mongo с назначенным текстовым индексом. Я создал индекс следующим образом:
db.submissions.createIndex({"$**":"text"})
В этой коллекции есть документ, который содержит эти два значения:
"Craig"
"Доктор Боб".
Моя цель - выполнить текстовый поиск документа, в котором есть несколько совпадающих терминов.
Итак, вот тесты, которые я провел, и их противоречивый вывод:
ОДИН СРОК, ПОЛНЫЙ
db.submissions.find({"$text":{"$search":"\"Craig\""}})
Результат: получает документ с этим значением.
ОДИН СРОК, ЧАСТИЧНЫЙ
db.submissions.find({"$text":{"$search":"\"Crai\""}})
Результат: ничего не возвращает, потому что этот частичный поисковый термин не совсем совпадает с чем-либо в документе.
НЕСКОЛЬКО УСЛОВИЙ
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bob\""}})
Результат: возвращает документ с обоими этими терминами.
НЕСКОЛЬКО УСЛОВИЙ, ОДИН ЧАСТИЧНЫЙ
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
Результат: возвращает документ с обоими терминами, несмотря на то, что один термин является частичным. В документе нет ничего, что соответствовало бы доктору Бо
НЕСКОЛЬКО УСЛОВИЙ, ОБА ЧАСТИЧНЫХ
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Результат: возвращает документ с обоими терминами, несмотря на то, что оба термина являются частичными и неполными. В документе нет ничего, что соответствовало бы ни «Крей», ни «Доктор Бо».
Вопрос
Итак, все сводится к: почему? Почему, когда я делаю текстовый поиск с частичным термином только с одним значением, ничего не возвращается. Когда я делаю текстовый поиск с двумя частичными терминами, я получаю соответствующий результат? Это кажется странным и непоследовательным.
Благодарю.