【问题标题】:Creating text index in pymongo在 pymongo 中创建文本索引
【发布时间】:2014-10-21 05:08:01
【问题描述】:

我有一个存储在“h”字段中的英语单词数据库。我刚刚发现了文本索引,我想在这个字段上创建一个以加快正则表达式的搜索,但不知何故,我就是无法正确使用语法。我正在使用 pymongo 2.7.1 和 python 3.4。

 from pymongo import MongoClient
 from pymongo import ASCENDING
 from pymongo import DESCENDING
 from pymongo import TEXT
 #...
 collection.create_index('h', TEXT)

我收到以下错误:

in create_index
raise TypeError("cache_for must be an integer or float.")
TypeError: cache_for must be an integer or float.

注意 ASCENDING 和 DESCENDING 有效。另外我想将默认语言设置为英语。

【问题讨论】:

  • 我不知道,但您的 create_index 似乎不支持 TEXT,它需要一个整数或浮点数。
  • 嗯,升序和降序都是整数,所以我希望文本也是。我也尝试过 ensure_index,但它仍然不起作用。
  • 我认为您应该确认 TEXT 是整数还是浮点数。
  • 显然不是。这是字符串“文本”。
  • 显然这似乎工作 collection.create_index([('h', TEXT)], cache_for=300, default_language='english') 但我还没有发布它,因为 mongod 说 warning: cannot find special index [text]。它可能需要一个名字。我会回来找你的。

标签: regex mongodb pymongo full-text-indexing


【解决方案1】:

将其作为数组发送。

collection.create_index([('h', TEXT)], default_language='english')

我也使用了 collection.getIndexes() 来检查它:

    {
    "key" : {
        "h" : "text"
    },
    "ns" : "a.a",
    "name" : "h_text"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2018-08-17
    • 2013-06-07
    • 2019-03-24
    • 1970-01-01
    • 2016-02-06
    相关资源
    最近更新 更多