Lucene 如何为CouchDB地理编码器建模数据

Lucene 如何为CouchDB地理编码器建模数据,lucene,nosql,couchdb,geocouch,Lucene,Nosql,Couchdb,Geocouch,我正在开发一个基于CouchDB的地理编码应用程序,该应用程序使用一个大型国家数据集,该数据集是以关系方式提供的。大约有2.5亿条记录分为9个表(ER图可在上查看)。我对nosql文档数据库和CouchDB尤其陌生,我正在考虑如何对此建模。目前,我已经将每个表的数据加载到CouchDB数据库中,其中的类型字段指示它是哪种记录。_id属性被设置为表[A]和[C]的主键,对于其他所有内容,它都是由coach自动生成的。我计划用coach设置Lucene,用于索引和全文搜索。X和Y点坐标都存储在表[A

我正在开发一个基于CouchDB的地理编码应用程序,该应用程序使用一个大型国家数据集,该数据集是以关系方式提供的。大约有2.5亿条记录分为9个表(ER图可在上查看)。我对nosql文档数据库和CouchDB尤其陌生,我正在考虑如何对此建模。目前,我已经将每个表的数据加载到CouchDB数据库中,其中的类型字段指示它是哪种记录。_id属性被设置为表[A]和[C]的主键,对于其他所有内容,它都是由coach自动生成的。我计划用coach设置Lucene,用于索引和全文搜索。X和Y点坐标都存储在表[A]中,但要找到这些坐标,我需要使用[表E]、[表B、C和D组合]和/或[表I]中的数据进行搜索,并选择基于[表F]中的数据过滤结果

我最初的意图是创建一个CouchDB数据库,它将所有这些表组合成一个单一的结构,[Table a]作为根,所有相关的表嵌套在这个结构下。然后,我将在此基础上构建我的各种搜索索引,并使用GeoCoach为反向地理编码设置空间索引。然而,我读过一些文章,其中建议将排序作为一种替代方法

我想这里的一个重要因素是读与写。计划是这些数据永远不会被更新,只会被读取。数据每季度发布一次,此时现有数据库将被清除,并创建一个新的数据库

我欢迎任何有经验的coach或相关文档数据库用户提供有关如何最好地设置和组织此文档的建议

非常感谢您的帮助。

guygrange

虽然我远非文档数据库设计方面的专家,但要认识到文档数据库的关键是,通过将所有必要的信息保存在一个文档中,使您的查询变得快速。因此,您需要查看您的查询以及您希望如何访问这些数据。例如,我可以很容易地想象一个地理编码应用程序不需要为您最频繁的查询访问每个表中的所有内容。因此,为了节省带宽,您可以制作一个主文档,其中包含您最经常关心的主要信息,以及其他适当数据的密钥。然后,您可以使用该键获取剩余数据,并合并字典,以便在客户端代码中进行轻松管理

安侬, 安德鲁