【问题标题】:Full-text search in mongodb in russian俄语中mongodb中的全文搜索
【发布时间】:2013-04-14 16:06:26
【问题描述】:

我正在尝试在 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
}

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

【问题讨论】:

  • 我认为这是因为搜索实际上不区分大小写,或者说索引不区分大小写。
  • 但在文档中写道搜索不区分大小写 (docs.mongodb.org/manual/reference/command/text)。还是仅适用于英语?
  • @rill 只能区分英文大小写吗?
  • 非常糟糕的是文本搜索还不支持俄语..

标签: mongodb full-text-search


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2013-09-08
  • 1970-01-01
相关资源
最近更新 更多