2012-04-01 7 views
0

Siehe auch: determine which value produced a hit in SOLR multivalued field typebestimmen, welcher Wert erzeugt ein Hit in SOLR mehrwertig Feld Typ2

Diese Frage gestellt wurde und auf Jan 2010

Mit neuen Solr-Versionen, die neueste stabile Version ist 3.5 beantwortet .0, Gibt es eine Solr-Funktion, um das mehrwertige Feld zu identifizieren, das den Treffer verursacht hat?

For Ex: 
<field name="id">ID</field> 
<field name="field1">Term1</field> 
<field name="field1">value2</field> 
<field name="field1">Term2</field> 

Wenn ich eine Suche durchführen,

qf=field1&q=Term 

Gibt es einen Weg, ich weiß, dass die Werte Begriff1 und Begriff2 der Hit aus dem Ergebnis verursacht von Solr zurückgekehrt?

+0

Uh, holen Sie den Wert des Feldes selbst? Je nachdem, was Sie vorhaben, kann das Abrufen von Facetten (siehe Solr Facettierung) hilfreich sein. – aitchnyu

+0

Was ist Ihr Anwendungsfall? Vielleicht wäre eine Änderung des Schemas relevanter als eine Lösung für diese spezielle Frage. – jpountz

Antwort

0

Etwas, was Sie versuchen könnten, ist mit Analyzer#getPositionIncrementGap und IndexReader#getTermVectors zu spielen, um zu berechnen, welche field1 Instanz enthielt Term.

Zum Beispiel, wenn Sie weniger als 10 field1 Instanzen haben, und wenn jede Instanz weniger als 100 Begriffe, dann ein positionIncrementGap von 10 * 100 = 1000 verwendet werden Ihnen, welches Feld Termposition % 1000 mit enthaltenen berechnen helfen.

Bitte beachten Sie, dass Sie zum Indexieren term vectors (with positions) aktivieren müssen, um dies tun zu können.

Vorsicht, das ist ein Hack, obwohl ich es zum Testen verwenden könnte, würde ich das wahrscheinlich in keiner seriösen Software tun.

Verwandte Themen