OPUS4 / opus4-search

OPUS 4 Solr search.
Other
1 stars 4 forks source link

Unterstützung der gewichteten Suche für Solr's "phrase slop" Parameter #123

Open extracts opened 11 months ago

extracts commented 11 months ago

Die gewichtete Suche "boostet" standardmässig bei einer Suche nach mehreren Begriffen (z.B. Hans Andersen) solche Suchergebnisse, die innerhalb eines Feldes den direkten Suchbegriff (Hans Andersen) enthalten. Solr führt also im Hintergrund auch einen sog. "phrase search" durch (so als ob der/die Nutzer:in die Suchbegriffe in Anführungszeichen eingeschlossen hätte: "Hans Andersen") und erhöht für gefundene Dokumente das Ranking innerhalb der Suchergebnisse.

Wenn ein Dokument allerdings stattdessen den Begriff Hans Christian Andersen oder Andersen, Hans enthält, so schlägt Solr's reguläre Phrasensuche nach "Hans Andersen" fehl. Mit Unterstützung für den "phrase slop" lässt sich dies verbessern, indem Solr bei einer Phrasensuche nach "Hans Andersen" auch Vorkommen wie Hans Christian Andersen oder Andersen, Hans findet. Die Solr Doku beschreibt dies so:

[A] phrase query can have a 'slop,' which is the distance between the terms of the query while still considering it a phrase match

Gibt man also z.B. einen "phrase slop" von 3 an, so würden auch gemeinsame Vorkommen von Hans und Andersen bei der Phrasensuche gefunden (und entsprechend geboostet) werden, solange sich höchstens 2 Begriffe zwischen den beiden Suchbegriffen befinden.

Zur individuellen Anpassung des "phrase slop" Parameters bräuchte es:

  1. in der Konfiguration eine zusätzliche Option
  2. in Opus\Search\Query.php entsprechende Getter & Setter; falls kein Wert explizit gesetzt wurde, würde der Getter den Wert aus der Konfiguration zurückgeben
  3. in Opus\Search\Solr\Solarium\Adapter.php->applyParametersOnQuery() müsste $edismax->setPhraseSlop() gesetzt werden
  4. ein Test in AdapterSearchingTest der zeigt, dass eine gewichtete Suche nach Hans Andersen mit "phrase slop" auch z.B. Hans Christian Andersen oder Andersen, Hans findet.