MongoDB文本搜索无法停止单词

时间:2015-05-20 19:38:49

标签: mongodb aggregation-framework

我试图在我的收藏中进行查询,但它没有返回任何内容。

这是我的query

{'$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时,它就有效。

我做错了吗?

1 个答案:

答案 0 :(得分:2)

来自docs

  

MongoDB支持各种语言的文本搜索。文本索引下降   语言特定的停用词(例如英语,“the”,“an”,“a”,   “和”等,并使用简单的语言特定后缀词干。

您的数据存在的问题是,某些记录中包含language-specific停用词a,该词也被视为portugese中的停用词。一些停用词包括,a位于列表的顶部。

a
ao
aos
aquela
aquelas
aquele
aqueles
aquilo
as
até
com
como

这些单词从不已编入索引,因此每当您查询停用词时,都不会得到任何结果。

同时,如果您查询b,您将获得结果,因为它不是停用词并且会被编入索引。