0

riak-search搜索需要更正的文档然后更新它们的正确方法是什么?按照设计,riak-search 是一个索引,它可能不会粘在 riak-kv 内容上。我除了在重型检查/写入操作中我的索引与我的 riak-kv 内容不匹配。

我依靠 riak-search 来限制对有限数量的匹配条目的读/写操作。

我真的无法使用这种算法进行操作:

page=0
while true:
    results = riak.search('index', 'sex:male', start=page)
    if results['num_found'] == 0:
        break
    for r in results['docs']:
       obj = riak.bucket_type(r['_yz_rt']).bucket('_yz_rb').get('_yz_rk')
       // alter object
       obj.store()
    page = page + len(results['docs])

我看到很多问题:

  • 首先,随着 riak-search 的追赶,它不会找到我更改的第一个文档,从而破坏了我的分页。
  • 从最后开始分页,是一个诱人的选择,但它会因此而给 solr 带来压力,或者达到max_search_results极限
  • 测试num_found不是打破循环的好方法,我很确定。

应该在开始编辑之前加载所有 riak-kv 键吗?是否有合适的算法/方法来满足我的需求?

编辑:

我的用例如下。我存储文本文档,其中包含来自我的字符串标记器算法的一系列术语,因为任何机器学习系统都会随着时间的推移而发展并变得更好。字符串标记器除了创建一个词云之外什么都不做。

我的存储桶类型不断增长,我需要从以前的标记器版本修补旧术语数组。为了实现这一点,我愿意搜索旧文档或包含我知道在我的新标记器版本中更正的错误标记的文档。

所以,我的搜索查询是:

  • 术语:badtoken
  • 创建日期:[2000-11-01 至 2014-12-01]

使用日期不是问题,但使用令牌是。因为从文档中删除 badtoken 将在几秒钟内更改 solr 索引,同时仍在搜索“badtoken”。它会改变我当前的分页,让我错过文档。

目前,我放弃了使用索引并简单地遍历整个存储桶。

4

0 回答 0