Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
extracts opened this issue Dec 6, 2023 · 0 comments
Open

Comments

@extracts
Copy link
Contributor

extracts commented Dec 6, 2023

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

1 participant