OPUS4 / opus4-search

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

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

Open extracts opened 9 months ago

extracts commented 9 months ago

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 commented 9 months ago

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.