2016-10-22 4 views
0

Ich habe ein Schema, das ein mehrwertiges Feld erlaubt, wie konstruiere ich eine Suche, die nur Dokumente zurückgibt, die 2 oder mehr Einträge in diesem Feld haben? zum Beispiel in dieser Untergruppe von Daten:Wie wird nach Dokumenten mit 2 oder mehr Einträgen im mehrwertigen Feld in Solr gesucht?

<doc> 
<str name="id">A</str> 
<arr name="multivaluedField"> 
    <str>One</str> 
    <str>Two</str> 
</arr></doc> 

<doc> 
<str name="id">B</str> 
<arr name="multivaluedField"> 
    <str>One</str> 
</arr></doc> 

<doc> 
<str name="id">C</str> 
<arr name="multivaluedField"> 
    <str>Three</str> 
    <str>Four</str> 
</arr></doc> 

Die Suche würde Dokumente A und C nur zurückkehren, da sie haben 2 Einträge in MultivaluedField auch wenn sie unterschiedliche Einträge sind.

Antwort

2

Der einfachste (und effektivste) Weg wäre, einen ganzzahligen Wert zu indizieren, der die Anzahl der Werte zusammen mit den vorhandenen Werten enthält, so dass Sie ein multiValued_count Feld haben. Dieses Feld kann indiziert werden, und Sie können sowohl effiziente Bereichsabfragen als auch genaue Wertabfragen durchführen.

Sie können dies bei Bedarf direkt in Ihrem Indexierungscode oder in einem Updateprozessor vornehmen.

+0

Ich denke, ich werde mit dieser Lösung gehen, nicht sicher, warum ich nicht darüber nachgedacht habe, danke –

Verwandte Themen