Cassandra 2.1 在Cassandra中检索具有动态属性的数据
我正在为卡桑德拉研究一个不可能的解决方案 我们有一个表,它将返回给定搜索条件的一组候选项。得分最高的行将返回给用户。我们可以用SQL很容易地做到这一点,但需要迁移到Cassandra。以下是相关表格: 价值观 得分Cassandra 2.1 在Cassandra中检索具有动态属性的数据,cassandra-2.1,Cassandra 2.1,我正在为卡桑德拉研究一个不可能的解决方案 我们有一个表,它将返回给定搜索条件的一组候选项。得分最高的行将返回给用户。我们可以用SQL很容易地做到这一点,但需要迁移到Cassandra。以下是相关表格: 价值观 得分 ATTRIBUTE | SCORE -------------+------------- COUNTRY | 1 STATE | 2 CITY | 4 COUNTY | 8 发送的查询可以填充或不填充这四个属性中的
ATTRIBUTE | SCORE
-------------+-------------
COUNTRY | 1
STATE | 2
CITY | 4
COUNTY | 8
发送的查询可以填充或不填充这四个属性中的任何一个。我们搜索价值表,计算分数,然后返回最高的分数。如果values表中的一列为null,则表示它适用于所有列
- ID 1适用于美国境内的所有州、市和县
- ID 2适用于德克萨斯州所在的所有国家、城市和县
Query: {Country: US, State: TX}
Matches Value IDs: [1, 2, 3, 4, 6]
Scores: [1, 2, 4, 8, 5(1+4)]
Result: {id: 4} (8 was the highest score so Broward returns)
您将如何在Cassandra 2.1中对类似的内容进行建模?发现实现这一点的最佳方法是将Solr与Cassandra结合使用。 关于使用Solr需要注意的一些事情,因为我需要的所有资源都分散在互联网上
- 前往Solr管理员用户界面(通常http://hostname:8983/solr/)
- 在左窗格的下拉列表中选择核心,应命名为keyspace.table_name
- 查找Config或Schema,两者都应指向Schema.xml
- 将该文件复制并粘贴到某个文本编辑器。或者,您可以尝试使用wget或curl下载该文件,但您需要右上角文本字段框中提供的真实链接
- 有一个名为TextField的标记
。将
替换为org.apache.solr.schema.TextField
。您还必须删除分析器,StrField不支持这些分析器org.apache.solr.schema.StrField
Query: {Country: US, State: TX}
Matches Value IDs: [1, 2, 3, 4, 6]
Scores: [1, 2, 4, 8, 5(1+4)]
Result: {id: 4} (8 was the highest score so Broward returns)