MongoDB文本搜索停止词失败
我试图在我的集合中执行查询,但它没有返回任何内容 这是我的MongoDB文本搜索停止词失败,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我试图在我的集合中执行查询,但它没有返回任何内容 这是我的查询: {'$match': {'$text': {'$search': 'a'}}}, {'$group': {'_id': {'texto': '$texto'}, 'somanumero': {'$sum': '$numero'}}} 我的收藏: { "_id" : ObjectId("555cdc4fe13823315537042d"), "texto" : ObjectId("555cdc4fe13
查询
:
{'$match': {'$text': {'$search': 'a'}}},
{'$group': {'_id': {'texto': '$texto'},
'somanumero': {'$sum': '$numero'}}}
我的收藏:
{ "_id" : ObjectId("555cdc4fe13823315537042d"), "texto" : ObjectId("555cdc4fe13823315537042c"), "numero" : ObjectId("555cdc4fe13823315537042e") }
{ "_id" : ObjectId("555cdc5ee13823315537042f"), "numero" : 5, "texto" : "a", "lattexto" : "-15.79506", "lontexto" : "-47.88322" }
{ "_id" : ObjectId("555cdc6ae138233155370430"), "numero" : 10, "texto" : "a", "lattexto" : "-15.79506", "lontexto" : "-47.88322" }
{ "_id" : ObjectId("555cdc73e138233155370431"), "numero" : 3, "texto" : "b", "lattexto" : "-15.79506", "lontexto" : "-47.88322" }
这是我的文本索引:
{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "texto_text",
"ns" : "OSA.teste_texto",
"default_language" : "portuguese",
"weights" : {
"texto" : 1
},
"language_override" : "language",
"textIndexVersion" : 2
}
当我单独使用$group
或$match
时,它会起作用
我做错什么了吗?来自:
MongoDB支持各种语言的文本搜索。文本索引删除
特定语言的停止词(如英语中的“the”、“an”、“a”,
并使用简单的特定于语言的后缀词干
您的数据存在的问题是,某些记录具有特定于语言的停止字,a
,在中也被视为停止字。一些停止词包括,a
位于列表顶部
a
ao
aos
aquela
aquelas
aquele
aqueles
aquilo
as
até
com
como
这些词是从不索引的,因此,无论何时查询停止词,都不会得到任何结果
同时,如果您查询
b
,您将得到结果,因为它不是一个停止词,并且将被索引。当您只执行$match
时,响应是什么?一个常见的错误是没有意识到聚合作为一个管道,下一个阶段(在本例中为$group
)将对第一个($match
)的结果起作用。你能分别发布$match
和$group
的结果吗?你是对的。我将默认语言设置为“none”,它就工作了。谢谢。@Batshray你知道有没有办法强迫MongoDB搜索所有单词——覆盖它们当前的行为来搜索停止词?