Skip to content
New issue

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

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

Already on GitHub? # to your account

Unterstützung der gewichteten Suche für Solr's "default operator" Parameter (AND/OR) #125

Open
extracts opened this issue Dec 6, 2023 · 1 comment

Comments

@extracts
Copy link
Contributor

extracts commented Dec 6, 2023

Aktuell wird standardmässig für eine gewichtete Suche AND als "default operator" Parameter verwendet. D.h. bei einer Suche nach mehreren Suchbegriffen führt Solr für diese eine UND-Suche aus, sprich alle Begriffe müssen in demselben Feld eines Dokuments vorkommen, damit das Dokument in den Suchergebnissen zurückgegeben wird.

Mit der Standardsuche (ohne Gewichtung einzelner Felder) hat OPUS nicht direkt über alle Felder sondern in sog. "catchall" Feldern (text und simple) gesucht, welche die Inhalte der einzelnen Felder zusammenfassten. Selbst wenn zwei Suchbegriffe ursprünglich aus zwei unterschiedlichen Feldern eines Dokumente stammten, kamen sie im "catchall" Feld dann gemeinsam vor. Damit entsprach die standardmässig verwendete UND-Suche quasi einer ODER-Suche über die einzelnen Felder.

Bei der gewichteten Suche gibt es keine "catchall" Felder mehr. Daher findet eine UND-Suche nun wirklich nur noch Dokumente, in denen alle gesuchten Begriffe innerhalb eines Feldes vorkommen. Damit werden weniger Dokumente gefunden als zuvor. Wahrscheinlich wäre es für die gewichtete Suche besser, standardmässig eine ODER-Suche zu verwenden. Hierbei würden mehr Dokumente gefunden werden, doch Dokumente mit Feldern, in denen alle gesuchten Begriffe vorkommen, würden innerhalb der Suchergebnisse ganz oben stehen.

Für die Unterstützung des "default operator" Parameters bräuchte es:

  1. in der Konfiguration eine zusätzliche Option
  2. in Opus\Search\Query.php müsste der bereits existierende "Magic"-Getter getUnion() in einen "echten" Getter umgewandelt werden, sodass, falls kein Wert explizit gesetzt wurde, der Getter den Wert aus der Konfiguration zurückgeben würde
  3. ein Test in AdapterSearchingTest der zeigt, dass bei einer gewichteten Suche nach mehreren Suchbegriffen mit "default operator" AND auch nur Dokumente gefunden werden, in denen alle gesuchten Begriffe innerhalb eines Felds vorkommen.
  4. ein analoger Test in AdapterSearchingTest mit einer gewichteten Suche nach mehreren Suchbegriffen mit "default operator" OR
@extracts
Copy link
Contributor Author

extracts commented Dec 6, 2023

Die AdapterSearchingTest Tests testWeightedAndSearchWithoutBoosts() und testWeightedOrSearchWithoutBoosts() testen bereits das Verhalten einer gewichteten UND- bzw. ODER-Suche. Es wird bislang nur nicht getestet, ob eine entsprechende Konfigurationsoption auch erfolgreich ausgelesen & gesetzt wird.

@j3nsch j3nsch removed this from OPUS 4.9 Jun 5, 2024
@j3nsch j3nsch added this to 4.8.2 Jun 5, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
Status: No status
Development

No branches or pull requests

1 participant