1

Solr はバージョン 4 から !join クエリを実装しています。

以下のケースが可能かどうか知りたいです。
たとえば、次の形式のドキュメントがあります:
doc1:
    field1:123
    field2:A
    field3:456

doc2:
    field1:123
    field2:B
    field3:789

doc3:
    field1:23456
    field2:A
    field3:264

フィールド field2 が B に等しいすべてのドキュメントを取得する必要があり、値 A のフィールド field2 を含む同じフィールド field1 値を持つドキュメントは他にありません。

SQL では、これは操作「not in」で行うことができます:
select * from doc where field2 = 'B' and field1 not in (select field1 from doc where field2 = 'A')

結合演算子は、SQL の in 演算子と同等です。

solr join または別の関数を使用して、ニーズを実装できますか?

ありがとう

4

1 に答える 1

0

この目的のために、ネストされたクエリを使用する必要があります。これに対する同じ質問と回答は次のとおりです。

https://stackoverflow.com/a/27191274/4304116

あなたの例のクエリは次のとおりです。

q=-_query_:"{!join from=doc_id to=id}field2:'A'"

field2 の値が「A」でないすべてのドキュメントが返されます。

また、別の条件をqに追加することもできます(「B」値のみが必要な場合):

q={!join from=doc_id to=id}field2:'B'"

field2 の値が「B」のすべてのドキュメントが返されます。

于 2014-11-28T15:28:58.550 に答える