4

我正在尝试在 mongodb 中使用全文搜索:

> db.collection.insert({"text" : "Первый второй третий"})
> db.collection.insert({"text" : "первый Второй третий"})
> db.collection.insert({"text" : "первый второй Третий"})
> db.collection.ensureIndex({"text" : "text"}, {"default_language" : "russian"})

句子仅在字母大小写上有所不同。

> db.collection.runCommand("text" , {search : "первый"})
{
        "queryDebugString" : "перв||||||",
        "language" : "russian",
        "results" : [
                {
                        "score" : 0.6666666666666666,
                        "obj" : {
                                "_id" : ObjectId("516acfe2dbfd90a837e09131"),
                                "text" : "первый Второй третий"
                        }
                },
                {
                        "score" : 0.6666666666666666,
                        "obj" : {
                                "_id" : ObjectId("516acfe8dbfd90a837e09132"),
                                "text" : "первый второй Третий"
                        }
                }
        ],
        "stats" : {
                "nscanned" : 2,
                "nscannedObjects" : 0,
                "n" : 2,
                "nfound" : 2,
                "timeMicros" : 86
        },
        "ok" : 1
}

结果仅包含两个条目,但应该是三个。在英语中一切都很好。

4

1 回答 1

5

这是文本搜索的一个已知限制,因为它存在于 MongoDB 2.4 中。出于文本搜索的目的,MongoDB 会将每个字符“ABCDEFGHIJKLMNOPQRSTUVWXYZ”(POSIX 语言环境中设置的“大写”)视为其等效的小写字母,但会将其他 UTF-8 代码点视为唯一的。

对 UTF-8 的全面折叠支持将在未来的版本中提供;在https://jira.mongodb.org/browse/SERVER-8423中查看 JIRA 中的相关票证。

于 2013-04-14T23:05:55.007 回答