MongoDB $text $search 未找到关键字:['by'、'and'、'me'...]

MongoDB $text $search not found with keywords: ['by','and','me'...]

我有一个关于在我的 collection 中使用 find 搜索关键字 'by'、'and'... 的问题,但在某些情况下它是错误的,有谁知道如何修复它?

这是我的 collection & 索引:

db.stores.insert(
   [
     { _id: 1, name: "Java Hut", description: "Coffee and cakes by Me" },
     { _id: 2, name: "Burger Buns", description: "by" },
     { _id: 3, name: "Coffee Shop", description: "Just coffee" },
     { _id: 4, name: "Clothes Clothes Clothes", description: "By Clothes" }
   ]
)

db.stores.createIndex( { name: "text", description: "text" } )

而且这个脚本会很好

db.stores.find({description: /by/})
db.stores.find({description: /and/})
db.stores.find( { $text: { $search: "java coffee shop" } } )
db.stores.find( { $text: { $search: "\"coffee shop\"" } } )
db.stores.find( { $text: { $search: "\"and cakes by\"" } } )
db.stores.find( { $text: { $search: "and cakes by" } } )
db.stores.find( { $text: { $search: "cakes" } } )
db.stores.find( { $text: { $search: "coffee" } } )

但是这里出了问题,我不明白为什么关键字'by'、'and'、'me'...不能在这个查询中使用。为什么单独使用它进行文本搜索会出错?

db.stores.find( { $text: { $search: "by" } } )
db.stores.find( { $text: { $search: "and" } } )

如果您有关于此的文档或 link,请给我。或者如果这个问题已经存在于其他地方,也给我。

谢谢!

已编辑: 类似的问题还有另一个 Disable stop word filtering in a MongoDB text search

这些称为 stop words,它们通常对搜索没有用。

要搜索词组,请将词组括在引号中。

@D.SM的回答很完美。除此之外,

如果指定语言值“none”,则文本索引使用简单的标记化,没有停用词列表,也没有词干提取。

db.quotes.createIndex(
   { name : "text" },
   { default_language: "none" } ---> Note here
)

MongoDB supports text search for various languages. text indexes drop language-specific stop words (e.g. in English, the, an, a, and, etc.) and use simple language-specific suffix stemming. For a list of the supported languages, see Text Search Languages.