Home > Net >  MongoDB text search string equality?
MongoDB text search string equality?

Time:09-29

I'm new to MongoDB and was looking through the docs a few nights ago and saw something that I haven't been able to locate since...

There was an option, I believe it was related to $text search, to treat an array of strings as if they were the same word. The syntax looked something like this:

  ["cheez", "cheese"],
  ["donut", "doughnut"],
  ["chips", "fries", "crisps"],

So a search for "chips" would return all documents indexed with "fries" or "crisps" even if they did not also have "chips".

Please tell me I wasn't dreaming!

CodePudding user response:

YOU ARE NOT DREAMING

mongodb fuzzy text search

The following query searches the title field for the phrase naw yark. It uses the fuzzy default options where:

  • maxEdits allows up to two character variation of each term in the given phrase to match the query to a document.
  • maxExpansions considers up to fifty similar terms for each term in naw yark to find matches.
  • prefixLength is disabled.

The query also includes a $limit stage to limit the output to 10 results and a $project stage to:

  • Exclude all fields except title
  • Add a field named score
db.movies.aggregate([
  {
    $search: {
      "text": {
        "path": "title",
        "query": "naw yark",
        "fuzzy": {}
      }
    }
  },
  {
    $limit: 10
  },
  {
    $project: {
      "_id": 0,
      "title": 1,
      score: { $meta: "searchScore" }
    }
  }
])

The above query returns the following results:

{ "title" : "New York, New York", "score" : 4.392756462097168 }
{ "title" : "New York", "score" : 4.050914287567139 }
{ "title" : "New York Stories", "score" : 3.4838104248046875 }
{ "title" : "New York Minute", "score" : 3.4838104248046875 }
{ "title" : "Synecdoche, New York", "score" : 3.4838104248046875 }
{ "title" : "New York Doll", "score" : 3.4838104248046875 }
{ "title" : "Little New York", "score" : 3.4838104248046875 }
{ "title" : "Escape from New York", "score" : 3.0559897422790527 }
{ "title" : "King of New York", "score" : 3.0559897422790527 }
{ "title" : "Naked in New York", "score" : 3.0559897422790527 }

also synonyms:

mongodb synonyms text search

  • Related