首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建RethinkDB索引时重新格式化索引字段的字符串

创建RethinkDB索引时重新格式化索引字段的字符串
EN

Stack Overflow用户
提问于 2018-01-29 13:16:06
回答 2查看 35关注 0票数 0

我正在尝试在RethinkDB中创建索引。文档如下所示:

代码语言:javascript
复制
{ "pinyin" : "a1 ai3"}

为了使搜索更容易,我想要预处理索引条目并删除空格和数字,因此条目在本例中应该简单地为"aai“。

代码语言:javascript
复制
r.index_create('pinyin', lambda doc: doc['pinyin'].replace("1", "")).run()

代码语言:javascript
复制
Expected 2 arguments but found 3 in:
r.table('collection').index_create('pinyin', lambda var_7:   var_7['pinyin'].replace('1', ''))

很明显,我不明白发生了什么。有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2018-01-29 14:34:54

我没有使用rethinkdb的经验。但是,如果您想删除字符串值中的所有数字和空格,下面的代码片段可能会有所帮助。

代码语言:javascript
复制
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()

输出:

代码语言:javascript
复制
axaix
票数 0
EN

Stack Overflow用户

发布于 2018-02-12 10:23:40

好了,我弄明白了,并在这里为其他可能遇到同样问题的人张贴。下面是在rethinkdb管理控制台的数据资源管理器中创建索引的方法:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48494788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档