Не могу найти "один раз" в mongodb - PullRequest
0 голосов
/ 28 января 2019

Я выполняю текстовый поиск в mongodb следующим образом:

db.getCollection('textsearches').find({"$text" : {"$search" : "once"}})

Это не дает мне никаких результатов.Когда я пытаюсь изменить поиск на что-то вроде этого:

db.getCollection('textsearches').find({"$text" : {"$search" : "once upon"}});

, это дает мне правильный результат, где явно есть поле с фразой «однажды».Почему это не работает с ключевым словом "один раз"?Это как-то связано с тем, как работает stemming в mongodb?

1 Ответ

0 голосов
/ 28 января 2019

Из документов

MongoDB поддерживает текстовый поиск для различных языков.в текстовых индексах пропускаются специфичные для языка стоп-слова (например, в английском, the, an, a и т. д.) и используется простой суффикс, зависящий от языка.Список поддерживаемых языков см. В разделе «Языки текстового поиска».

Если указать значение языка «none», тогда в текстовом индексе будет использоваться простой токенизация без списка стоп-слов и без основ.

Таким образом, вы можете createIndex, указав от default_language до none

db.getCollection("textsearches").createIndex(
  { "field" : "text" },
  { "default_language": "none" }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...