4

我需要做一个 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')
4

3 回答 3

2

从 solr 3.4 开始就有连接。看一下这个

http://lucidworks.com/blog/lucene_3_4_0/

于 2012-05-22T15:11:46.617 回答
1

我会尝试过滤查询和方面的不同变体。就像是:

q=*:*
fq=(type:city AND name:london)
facet=true
facet.query=type:person

希望这会有所帮助,祝你好运。

于 2012-05-10T02:04:05.167 回答
0

试试这个

q=*:*&fq=city:london&fq=type:(city OR person)
于 2015-06-01T05:22:33.363 回答