Запрос подмножества слов в полнотекстовом поиске MongoDB Atlas - PullRequest
1 голос
/ 09 июля 2020

Моя цель - создать конвейер индекса + поиска, чтобы я мог найти следующий документ, выполнив поиск по запросу «reprod»:

{ name: "can you find this and reproduce?" }

Что у меня есть :

Я использую индекс по умолчанию. Мой поисковый конвейер выглядит так:

$search: {
    text: {
        query: 'reprod',
        path: 'name',
    },
},

Но это не работает - я получаю полный результат только тогда, когда указываю все слово в запросе. Я хочу, чтобы документ был возвращен, даже если я предоставлю только часть слова.

1 Ответ

3 голосов
/ 15 июля 2020

Если вы можете изменить определение индекса, я бы предложил использовать оператор автозаполнения , но поля, для которых вы запрашиваете с помощью этого оператора, в настоящее время требуют, чтобы они были статически определены в определении индекса. В этом примере определение индекса может выглядеть примерно так:

{
  "mappings": {
    "dynamic": false,
    "fields": {
        "name": {
          "type": "autocomplete"
        }
    }
  }
}

И тогда ваш запрос будет выглядеть так:

{
  $search: {
    "autocomplete": {
      "path": "name",
      "query": "reprod"
    }
  }
}

Если вам не нужен статически определенный индекс определения, вы можете использовать Оператор подстановочного знака вместо Allow Analyzed Field, установленного на true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...