[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [InetBib] Syntax von Suchanfragen: best practices



Hallo Sascha,

ob es wirklich beste Praxis ist, kann ich noch nicht sagen. Bei unserem 
Projekt verwenden wir einen leicht anderen Ansatz.

Da wir auf Basis von VuFind entwickeln, erben wir auch die Entscheidung, 
dass bei der Suche 'dismax' verwendet wird. Steuerzeichen wie '+' und 
'*' können wenn überhaupt nur in der Expertensuche maskiert werden. Für 
die 'normale' Suche verwenden wir einen Trick, bei dem bekannte 
Eigennamen umgeschrieben werden: C++ -> Cplusplus, B+ -> Bplus, A* -> 
Astern, ...
Das ist sicher nicht *DIE* optimale Lösung, aber sie ist praktikabel und 
die negativen Seiteneffekte (z.B. keine Suche nach A* möglich) scheinen 
erträglich. Das Umschreiben überlassen wir SOLR, so werden die 
Eigennamen beim Indexieren und beim Suchen gleich behandelt und sicher 
gefunden.
<charFilter class="solr.MappingCharFilterFactory" 
mapping="mapping-specials.txt" />

Viele Grüße
Uwe



Am 12.08.2012 19:31, schrieb Sascha Szott:
Hallo allerseits,

viele Bibliotheks-Retrievalsysteme nutzen die populäre Suchbibliothek
Lucene/Solr und reichen die von ihr angebotene Suchanfragesyntax mehr
oder weniger direkt an den Benutzer durch. Dadurch sind dann mittels '?'
und '*' Wildcard-Queries möglich oder auch Phrase-Queries durch das
Einschließen der Suchanfrage in doppelte Anführungszeichen. Auch die
Abtrennung von Indexfeldbezeichnungen durch Doppelpunkt vom Feldinhalt
ist gebräuchlich. Die booleschen Operationen werden meist durch +/AND,
-/NOT und OR unterstützt.

Ich behaupte, dass viele dieser Such-Operatoren eher in die Rubrik
Expertensuche einzuordnen sind (zumindest bestätigen das meine
Logfile-Analysen -- je nach Kontext kann das aber auch variieren). Die
Frage ist aber, wie man sinnvoll unterscheiden kann, ob ein Benutzer
z.B. bei der Eingabe eines '*' das Zeichen selbst oder das
Spezialzeichen (in der Bedeutung: Platzhalter für beliebig viele
Zeichen) meint. Beide Interpretationsvarianten haben ihre Vor- und
Nachteile und m.E. sind beide Varianten plausibel.

Wir das Zeichen '*' nicht als Spezialzeichen interpretiert, kann der
Benutzer ohne Handstand z.B. den Titel 'A* algorithm' finden (in genau
dieser Schreibweise). Wird es als Spezialzeichen interpretiert, dann
würde bei der Suchanfrage auch der Titel 'Ant algorithm' gefunden
werden, was den Benutzer u.U. irritiert. Ein ähnliches Beispiel kann man
mit der Suchanfrage 'b+-trees* erzeugen. Hier ist der Benutzer
möglicherweise irritiert, wenn er auch Ergebnisse zu 'b-trees' angezeigt
bekommt (die im Ranking vor 'b+-trees' liegen).

Mich würden diesbezüglich "best practices" interessieren. Welche
Variante haben Sie in ihrem System gewählt (und warum)? Sollte man nicht
besser standardmäßig auf die spezielle Interpretation der Zeichen
verzichten (um den Normalbenutzer nicht zu verwirren). Wenn ja, wie kann
man dem Expertennutzer dann aber dennoch die Möglichkeit bieten,
Wildcard- oder Phrase-Queries zu formulieren?

Beste Grüße,
Sascha Szott


-- 
http://www.inetbib.de


Listeninformationen unter http://www.inetbib.de.