我有一个数据库,其中包含“条目”集合,其结构如下:
db.entries.createIndex( { body: "text" } )
我想在我的网站上使用搜索功能,因此我在“ body”属性上创建了一个文本索引,如下所示:
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: "text" }})
到目前为止,太好了。我搜索db.entries.find({$text: { $search: "some" }})
,并返回了两个条目。但是,当我搜索dotnet test "project.csproj" --no-build --verbosity normal --logger:"nunit;LogFilePath=xunit_results.xml"
时却什么也没得到。
我用不同的单词再次尝试了。 “教堂”工作正常,但“更多”也不会返回任何内容。为什么?
答案 0 :(得分:3)
MongoDB文本索引删除了一些特定于语言的单词,这些单词被视为Stopwords,而some
是其中之一。要解决此问题,您可以使用default_language: "none"
来建立索引-这样可以防止出现任何停用词,并且可以索引整个内容:
db.entries.createIndex(
{ body : "text" },
{ default_language: "none" }
)
英语停用词here的完整列表。
答案 1 :(得分:0)
您可以在mongo shell中运行以下命令,以允许在 db.entries.createIndex({body:“ text”}); 下一个 db.entries.find({$ text:{$ search:“ some text”}}); 或 db.entries.find({body:{$ in:“ some text”}}) 我正在尝试最好的答案,我认为这很有用...如果不工作,请不要打扰