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\""}})

Результат: возвращает документ с обоими терминами, несмотря на то, что оба термина являются частичными и неполными. В документе нет ничего, что соответствовало бы ни «Крей», ни «Доктор Бо».

Вопрос

Итак, все сводится к: почему? Почему, когда я делаю текстовый поиск с частичным термином только с одним значением, ничего не возвращается. Когда я делаю текстовый поиск с двумя частичными терминами, я получаю соответствующий результат? Это кажется странным и непоследовательным.

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос