我正在尝试在RethinkDB中创建索引。文档如下所示:
{ "pinyin" : "a1 ai3"}为了使搜索更容易,我想要预处理索引条目并删除空格和数字,因此条目在本例中应该简单地为"aai“。
r.index_create('pinyin', lambda doc: doc['pinyin'].replace("1", "")).run()Expected 2 arguments but found 3 in:
r.table('collection').index_create('pinyin', lambda var_7: var_7['pinyin'].replace('1', ''))很明显,我不明白发生了什么。有人能帮上忙吗?
发布于 2018-01-29 14:34:54
我没有使用rethinkdb的经验。但是,如果您想删除字符串值中的所有数字和空格,下面的代码片段可能会有所帮助。
import re
doc = { "pinyin" : "a1 ai3"}
removeIntSpace = lambda doc: re.sub("\d", "x", doc['pinyin'].replace(" ", ""))
print removeIntSpace(doc)
#r.index_create('pinyin', removeIntSpace(doc)).run()输出:
axaix发布于 2018-02-12 10:23:40
好了,我弄明白了,并在这里为其他可能遇到同样问题的人张贴。下面是在rethinkdb管理控制台的数据资源管理器中创建索引的方法:
r.db("dics").table("collection").indexCreate('pinyin', r.row("pinyin").split("").filter(function(char) { return r.expr(["1", "2", "3", "4", " "]).contains(char).not(); }).reduce(function(a, b) { return a.add(b); }))相应的python版本将在过滤器部分使用匿名函数和lambda。
https://stackoverflow.com/questions/48494788
复制相似问题