Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 文本搜索没有';某些单词不能返回任何内容_Node.js_Mongodb - Fatal编程技术网

Node.js 文本搜索没有';某些单词不能返回任何内容

Node.js 文本搜索没有';某些单词不能返回任何内容,node.js,mongodb,Node.js,Mongodb,我有一个包含“条目”集合的数据库,其结构如下: { tags: [ { type: mongoose.Schema.Types.ObjectId, ref: "Tag" } ], body: String } 我想在我的网站上有一个搜索功能,所以我在“body”属性上创建了一个文本索引,如下所示: db.entries.createIndex( { body: "text" } ) 它工作

我有一个包含“条目”集合的数据库,其结构如下:

{
    tags: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: "Tag"
        }
    ],
    body: String
}
我想在我的网站上有一个搜索功能,所以我在“body”属性上创建了一个文本索引,如下所示:

db.entries.createIndex( { body: "text" } )
它工作得很好。我创建了两个条目并运行了
db.entries.find()
。我明白了:

{ "_id" : ObjectId("5c2e3d9fd1d5dd121ed85695"), "tags" : [ ], "body" : "some text", "__v" : 0 }
{ "_id" : ObjectId("5c2e3dadd1d5dd121ed85696"), "tags" : [ ], "body" : "text some", "__v" : 0 }
到目前为止,一切顺利。我搜索
db.entries.find({$text:{$search:{$search:{$text}})
并返回这两个条目。但是当我搜索
db.entries.find({$text:{$search:{$search:{$some}})
时,我什么也没有得到


我用不同的词又试了一遍。“教堂”很好用,但“更多”也不会回报任何东西。为什么???

MongoDB文本索引会删除一些被认为是特定语言的单词,
一些是其中之一。要解决此问题,您可以使用
默认语言“none”
建立索引-这可以防止任何停止字和整个内容被索引:

db.entries.createIndex(
    { body : "text" },
    { default_language: "none" }
)

英语stopwords的完整列表。

您可以在mongo shell中运行以下命令,以便在 createIndex({body:“text”}); 下一个 find({$text:{$search:“some text”}}); 或-或 find({body:{$in:“some text”}})
我正在尝试我最好的答案,我认为它是有用的…如果不工作,不要麻烦

有什么理由你必须使用文本(字符串)而不是像regex这样的东西吗?类似于
db.entries.find({body:/text/ig})
?我不是很有经验,所以我对正则表达式几乎一无所知。不过我做了一些调查。我知道“I”是不必要的,因为默认情况下MongoDB文本搜索不区分大小写,我认为使用“g”只会增加服务器响应时间,没有任何额外的好处。这很有效,谢谢!我想答案就在那里,我只是不知道该找什么。