Полнотекстовый поиск с mongodb не работает - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь реализовать форму поиска с javascript внешним интерфейсом и go + бэкендом mongodb. Для начала я попробовал следующее руководство https://code.tutsplus.com/tutorials/full-text-search-in-mongodb--cms-24835 через оболочку mongodb.

db.messages.insert({"subject":"Joe owns a dog", "content":"Dogs are man's best friend", "likes": 60, "year":2015, "language":"english"})

db.messages.insert({"subject":"Dogs eat cats and dog eats pigeons too", "content":"Cats are not evil", "likes": 30, "year":2015, "language":"english"})

db.messages.insert({"subject":"Cats eat rats", "content":"Rats do not cook food", "likes": 55, "year":2014, "language":"english"})

db.messages.insert({"subject":"Rats eat Joe", "content":"Joe ate a rat", "likes": 75, "year":2014, "language":"english"})
db.messages.createIndex({"subject":"text"})
db.messages.find({$text: {$search: "dogs"}}

Результат поиска дает мне результат, как описано в руководстве выше. Однако, когда я пытаюсь найти через Go, я не получаю результата, если не набираю точно такой же текст темы, а не только его часть, не говоря уже о регистре / нечувствительности.

My Go строка запроса выглядит так:

cur, err := collection.Find(ctx, bson.M{"$text": bson.M{"$search": "dogs"}})

Кто-нибудь знает, почему это может происходить? Есть ли лучший способ поиска в mongodb? Например, movietitle будет «Бойцовский клуб», и я хочу получить результат, даже если кто-то напечатает «Бой», «Клуб» или «Бой» и т. Д. c ...

...