使用riak搜索查找和更新匹配的文档

时间:2016-03-20 15:04:37

标签: riak riak-search

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赶上时,它找不到我改变的第一批文件,打破了我的分页。
  • Paginate从最后开始,是一个诱人的选择,但它会强调solr,或者达到max_search_results限制
  • 测试num_found不是打破循环的好方法,我很确定。

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

修改

我的用例如下。我存储的文本文档包含来自我的字符串标记生成器算法的一系列术语,就像它随着时间的推移而发展并随着时间的推移而变得更好字符串标记器除了创建文字云外什么都不做。

我的存储桶类型不断增长,我需要修补以前的标记生成器版本中的旧术语数组。为了达到这个目的,我愿意搜索包含坏标记的旧文档或文档,我知道在我的新标记器版本中已经纠正了这些标记。

所以,我的搜索查询是:

  • 术语:badtoken
  • created_date:[2000-11-01至2014-12-01]

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

目前,我放弃使用索引并简单地走遍整个桶。

0 个答案:

没有答案