【发布时间】:2015-11-23 16:36:32
【问题描述】:
假设我有一个包含以下字段的索引:
身份证、姓氏、国家、年龄
什么是 Solr 查询语法来实现在 SQL 中可以表示为的东西:
SELECT *
FROM table
WHERE country = (SELECT country FROM table WHERE id = 123);
问题 - 我希望这只是一个查询,而不是两个单独的查询。
【问题讨论】:
假设我有一个包含以下字段的索引:
身份证、姓氏、国家、年龄
什么是 Solr 查询语法来实现在 SQL 中可以表示为的东西:
SELECT *
FROM table
WHERE country = (SELECT country FROM table WHERE id = 123);
问题 - 我希望这只是一个查询,而不是两个单独的查询。
【问题讨论】:
你将不得不稍微改变你的数据结构。 它不是 SQL,也没有关系,所以你必须手动映射。
文档:
{
"Id": 1,
"Surname": "myname",
"CountryId": 1,
"Age": 49
}
查询:
http://my.solr/solr/table/select:
{
"q": "*:*",
"fq": "CountryId: 49",
"fl": "*"
}
【讨论】:
如果您不想对数据进行非规范化,请尝试Join 或Block Join。
Join 的一个例子是:
{
"q":"{!join fromIndex=country from=id to=country}*:*"
}
但是当你有大量数据时会很慢,比如每个核心有数百万个条目。
【讨论】: