Open extracts opened 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.
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
undsimple
) 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:
Opus\Search\Query.php
müsste der bereits existierende "Magic"-GettergetUnion()
in einen "echten" Getter umgewandelt werden, sodass, falls kein Wert explizit gesetzt wurde, der Getter den Wert aus der Konfiguration zurückgeben würdeAdapterSearchingTest
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.AdapterSearchingTest
mit einer gewichteten Suche nach mehreren Suchbegriffen mit "default operator"OR