2

我有一个包含这些文档的 Solr 数据库:

<doc>
    <str name="document_name_s">comment</str>
    <int name="deal_id_i">1</int>
    <int name="forumuser_id_i">8</int>
    <str name="id">108</str>
    <str name="message_s">hi kone you are right...</str>
</doc>
<doc>
    <str name="document_name_s">comment</str>
    <int name="deal_id_i">1</int>
    <int name="forumuser_id_i">8</int>
    <str name="id">112</str>
    <str name="message_s">41lxlg9x abbiiiog 1rkrp 440s 7hm34 4vyvg7t wevo bmq 718am5 d3d609 zxjrkd ycklykhx 1xasj v307287</str>
</doc>
<doc>
    <str name="document_name_s">deal</str>
    <str name="content_s">o2tqtoc3ge ryjf tti ed3rr6 r1vw4wla1c 3lmu7 o72ee1fmd jv7dcn usao0 iuz cy4s91 ys52w3t 8td2hz2pgu 58pxad6l zsyov07p r2z2 doav4k u1i49k c0te79k wrdkbqkr eo8p8e0ez 65u 3syi zu870a k3pl p4v zrjurlsa3 ivg v1h00 nfhx ujcxx3 mf46s xkld0fh mkeexbyb sqpq udncpnd0 uz0922dmmj vqwn zf59gl0rc 3tn z98n kql9ry1p 02gk 0rff5lt hb0exi9cp olik492q 4ycl c9ma2zx uwghjavut2 sczpmlg qqpy tqptp5h k5qce2pj ntv 5u98bg58n mshyy8e m7ip0m m7gd8z343 a99df fhp5g5ny 51vg3mxm cfk7au mmf67x0cj hrh 7i16 0mxzaq97 ca9o 5g0ct p0b hf6h3 e9ghhrjlt dqjj x1v9 ko3a5i hoq1 44k jfhf 121bsb6ud3 cql6l ipirv2 6qhpjcb 25t0zm67 ttm5lt</str>
    <int name="forumuser_id_i">1</int>
    <str name="id">1</str>
    <str name="plainlink_s">http://www.zalando.de/adidas-performance-dfb-pu-messenger-core-green-white-ad544a0e0-602.html</str>
    <str name="title_s">g4c Schuhe vtklq50</str>
</doc>
<doc>
    <str name="document_name_s">forumuser</str>
    <str name="id">1</str>
    <str name="username_s">kone2</str>
</doc>

现在我想找到所有“交易”,例如用户“kone”是交易的用户,或者评论文本包含“kone”作为单词。这在 Apache Solr 4 中可能吗?

4

2 回答 2

2

您需要的是一个Join查询。Solr 4.0 文档中描述了语法。我想第一个例子已经是你想要的了,所以这应该有效:

q={!join from=forumuser_id_i to=id}kone

与“正常”查询相比,唯一的变化是连接关系的规范:

q={!join from=... to=...}...

这允许您进一步限制结果,例如通过使用过滤查询 ( fq) 仅返回“交易”。

于 2012-12-27T10:14:38.570 回答
1

您在这里实际上想要实现的是不同文档之间的 JOIN。

不幸的是,此功能仅从Solr 4.0开始可用。

于 2012-12-26T23:00:41.383 回答