Создание страницы полнотекстового поиска для таблицы

Привет я создаю опцию поиска для коллекции Мангуст. Проблема в обработке ключевых слов. Мне нужно обрабатывать ключевые слова, такие как, если они находятся в «» они должны рассматриваться как одно слово, и если они разделены запятыми или пробелом, то они должны рассматриваться как или условия параметр, как это, как я могу отслеживать несколько входов в «» и запятыми. Любая ссылка или пример были бы очень полезны.

1 ответ

  1. Ознакомьтесь с документацией $text operator.

    Предположим, у вас есть коллекцияposts, которая имеет следующие документы:

    {postText: 'The dog ran really fast.'},
    {postText: 'The cat ran pretty slow.'},
    {postText: 'That hampster is crazy fast.'}
    

    Убедитесь, что вы создали текстовый индекс.

    db.posts.createIndex({postText: "text"})
    

    Для вашего-или-случая, просто передайте ключевые слова, разделенные пробелом.

    // this will return all documents
    db.posts.find({$text: {$search: 'dog cat hampster'}})
    
    // this will return two documents (dog & hampster)
    db.posts.find({$text: {$search: 'really fast'}})
    

    Чтобы точно соответствовать фразе, заключите ее в кавычки.

    // this will return one document (dog)
    db.posts.find({$text: {$search: '"really fast"'}})
    

    Их тоже можно комбинировать.

    // this will return all documents
    db.posts.find({$text: {$search: '"really fast" cat'}})
    

    Надеюсь, это поможет.