:フィールドID、ContactId、プロパティ稼働とIDの一意のキーを持つ文書とのSolr 6.6.2グループ化されたクエリ
A Solrのクラウドコレクション。
同じContactIdを持つ複数のドキュメントが存在する可能性があります。
各連絡文書には、1行のテキストを含むテキストフィールドプロパティがあります。プロパティフィールドは '、'で区切ってインデックス付けされています。プロパティ:グリーンヒット。例えば
:
+----+-----------+--------------+
| ID | ContactId | Properties |
+----+-----------+--------------+
| 1 | C1 | Blue,Green |
| 2 | C1 | Blue,Yellow |
| 3 | C2 | Green,Yellow |
+----+-----------+--------------+
は今、私はプロパティが「グリーン」、このクエリは、このContactIDのすべての文書上で一致することを許可されている「イエロー」を持っているすべてのContactIdsを見つける必要があります。結果はC1、C2の場合になります。
結果をグループ化しようとしましたが、グループ化された結果を照会できませんでした。
group=true&group.field=ContactId&group.query=(Green AND Yellow)&q=(Green OR Yellow)
私は続くアイデアがグリーンOR group.field ContactId、その後でgroup.query緑と黄の条件でグループ化を行うよりもイエローのいずれかを持っているすべての文書を取得するためのクエリ(Q)でした。 しかし、それは成功しませんでした。 MySQLの一
はちょうど
group_concat(Properties) as grouped
を行うと、その文字列上のようにします:
grouped LIKE '%Green%' AND grouped LIKE '%Yellow%'
どのように私はSolrのインデックスにこのクエリを達成することができますか?
交差のSolrの例から派生しintersect(
search(w3, q=Properties:("Green"), fl="ContactId", sort="ContactId asc"),
search(w3, q=Properties:("Yellow"), fl="ContactId", sort="ContactId asc"),
on="ContactId")
:
は、これまでの重引用符でとせずに示唆されているようにしようとしました両方のプロパティが同じ文書内のどこ
intersect(
search(w3, q=Properties:("Green" OR "Green" AND "Yellow"), fl="ContactId", sort="ContactId asc"),
search(w3, q=Properties:("Yellow" OR "Green" AND "Yellow"), fl="ContactId", sort="ContactId asc"),
on="ContactId")
しかし、まだ結果だけが出てくると同一のContactIdの複数のドキュメントに分割されているものではありません(その場合はC2のみですが、C1では使用できません)。
既存のデータモデルで行う必要がありますか?インデックス時間の参加はあなたのためかどうかはできませんか? – Mysterion
いいえ、私はそれを変更することはできません – gantners