Mongodb полнотекстовый поиск не работает с точной фразой "ANYTHING.com" - PullRequest
0 голосов
/ 15 февраля 2019

У меня проблема с полнотекстовым поиском Mongodb.У меня есть 1M данных в моей коллекции с полем email.

Я создал текстовый индекс для нескольких полей.В то время как я использую запрос как

db.user.find({"$and":[{"user_id":59856}],"$text":{"$search":"\"johnsmith@gmail.com\""}})

Это занимает более 25 секунд.Но когда я удаляю .com как

db.user.find({"$and":[{"user_id":59856}],"$text":{"$search":"\"johnsmith@gmail\""}})

, это занимает максимум 3-4 секунды.Мне интересно, почему.

1 Ответ

0 голосов
/ 15 февраля 2019

Скорее всего, потому что символ точки трактуется как "соответствует любому символу" на языке регулярных выражений.Так как вы, кажется, пытаетесь сделать точное совпадение, вы можете попытаться избежать его (чтобы оно совпадало только с точечным символом)

db.user.find({"$and":[{"user_id":59856}],"$text": 
{"$search":"\"johnsmith@gmail\.com\""}})
...