【发布时间】:2012-05-18 09:10:28
【问题描述】:
我需要做一个 Solr 子查询,如果它在 MySQL 中会如下所示:
SELECT *
FROM solr_index
WHERE type = 'person' AND
city IN (SELECT name FROM solr_index WHERE name = 'London' AND type = 'city')
显然 Solr 连接非常相似 - http://wiki.apache.org/solr/Join。但这些似乎只在 Solr 4 中可用。有什么方法可以在 Solr 3.X 中做到这一点?
理想的方式与 ComplexPhraseQueryParser 兼容并且 Solr PHP 客户端或 Solarium 支持。
非常感谢任何帮助。
更新:
另一个与位置无关的例子:
SELECT *
FROM solr_index
WHERE type = 'project' AND
tag IN (SELECT name FROM solr_index WHERE name = 'Elephant' AND type = 'tag')
【问题讨论】:
-
查看地理/空间特征而不是基于字符串的位置信息搜索可能会更好。 wiki.apache.org/solr/SpatialSearch
-
感谢您的回复。我需要这个功能来处理一些场景——不仅仅是与位置有关。我添加了另一个示例来演示如何将其用于其他用途。
-
人们通常会去规范化(扁平化)他们的架构,以便不必进行连接。在你的情况下不可能吗?