2

我正在使用 cloudant,我可以使用 mapreduce 来投影数据视图,也可以使用 lucene 搜索文档

但这两个功能是分开的,不能一起使用

假设我用这样的用户数据制作游戏

{
    name: ""
    items:[]        
}

每个用户都有项目。然后我想让用户找到所有质量+10的剑。使用 cloudant,我可以将类型和质量作为关键并使用查询key=["sword",10]

但它不能使查询比 lucene 所能做的更复杂。要执行 lucene,我需要将所有项目标准化为文档并与所有者一起引用

我真的希望我可以对数据投影的键进行 lucene 搜索。我的意思是,我可以根据需要存储嵌套文档,而不是规范化,并使用 map/reduce 来投影文档内的数据,这样我就可以直接搜索项目

PS。如果该数据库通过脚本进行部分更新,并且固有地具有事务更新功能,那将是最好的

4

3 回答 3

2

我完全不确定我的问题是否正确,但您可能想看看riak。它提供了一个基于 solr 的搜索,有据可查。我过去曾使用它在分布式键值索引上进行分布式搜索,而且速度非常快。

如果你使用它,你还需要看一下solr 查询的语法,所以我在这里添加它以节省你一些时间。但是,请记住,并非所有这些 solr 查询功能都在 riak 中可用(至少在我使用它时是这样)。

于 2017-01-09T13:23:01.267 回答
2

我建议尝试elasticsearch

似乎您的用例应该包含在搜索 api中

如果你需要做更复杂的分析,elasticsearch 支持聚合

于 2017-01-15T02:48:49.350 回答
1

有几种解决方案可以完成这项工作。我可以给我的 2 美分建议完善的 MongoDB。使用 MongoDB,您可以在给定字段上创建文本索引,然后按照此处的说明进行全文搜索。该功能自 2.4 版起就在 MongoDb 中,语法在 MongoDB 文档中有详细记录。

于 2017-01-10T10:16:46.510 回答