Allgemein Suchfunktion

Olli

Neues Mitglied
Registrierter Benutzer
15. Mai 2008
1
0
1
Hallo,

ich möchte mich erstmal kurz vorstellen. Ich bin derzeit Diplomand und schreibe meine Diplomarbeit über das Thema Wissensmanagement. In der Firma, in der ich arbeite, richte ich derzeit zusammen mit der IT-Abteilung ein Wiki auf Basis des Mediawikis ein. Es klappt auch soweit ganz gut. Leider habe ich jetzt ein Problem und kann die Lösung nicht dazu finden. Da ich meinem Chef bald erklären muss, wie die Lösung aussehen kann, hoffe ich vllt durch Euch auf Antworten. Und nun zu meinem Problem:

Ich habe in unserem Firmenwiki einen Artikel mit dem Namen ABC-Analyse geschrieben. Wenn ich nun diesen Artikel mit dem ganzen Namen suche, dann findet das Wiki ihn auch. Schon mal sehr gut :D Es gibt ja auch die Möglichkeit mit einer Wildcard zu suchen, z.B. ABC* dann müsste das Wiki ja auch den Artikel finden - tut es aber nicht. Wenn ich nur AB* eingebe, dann findet er ihn wieder. Ich hatte erst die Vermutung, das könnte am Bindestrich liegen, aber das scheint nicht der Fall zu sein. Habe dann mal zum Spaß bei wikipedia nach dem Wort ABC-Analyse gesucht und auch mit einer Wildcard, also ABC*. Dort wird der Artikel, der auch mit einem Bindestrich geschrieben ist, mit ABC* gefunden.

Woran könnte das liegen, dass ich den Artikel mit dem Suchbegriff ABC* in unserem Wiki nicht finde?

Wäre über Antworten und Eure Hilfe sehr dankbar.

Gruß Olli
 

WikiSysop

Mitglied
Registrierter Benutzer
30. Januar 2008
100
0
16
Hallo Olli,

weiß du inzwischen woran es liegt? Welche Mediawiki-Version verwendest du? In meinem Wiki (Version 1.9.3) ist mir aufgefallen, dass Wörter mit 3 Buchstaben überhaupt nicht gefunden werden! Z.B. wollte ich Geburtsdaten aussortieren und habe die Monate durchgesucht. Alles kein Problem außer "Mai" da liefert die Suche keine Ergebnisse :| Vielleicht ein Bug in der Software!?
 
S

stäubel

GAST
Hallo zusammen

Konntet ihr eigentlich das Wildcard-Problem auch lösen?
Bei meinem internen MediaWiki ist eine Wildcard suche nicht möglich und beim richtigen Wikipedia funktioniert das Problemlos.

Olli schrieb:
Es gibt ja auch die Möglichkeit mit einer Wildcard zu suchen, z.B. ABC* dann müsste das Wiki ja auch den Artikel finden - tut es aber nicht.

Viele Grüsse

Stäubel
 

Quartalsnichttrinker

Neues Mitglied
Registrierter Benutzer
8. August 2008
27
0
1
Hallo liebe Nichttrinker(innen) und Trinker(innen),
der letzte Beitrag zu diesem Thema wurde bisher noch nicht beantwortet, deshalb möchte ich mich hier einklinken (und keinen neues Thema erstellen).
Als ich nach der Installation meines Mediawiki und dem Füllen mit etwas Initial-Contend die Volltext-Suchmöglichkeiten probierte, kam ich zu folgender Zusammenfassung:
  • Groß-/Kleinschreibung ist bei der Suche nicht relevant.[/*:m:17vx256g]
  • Wörter mit drei und weniger Zeichen werden ignoriert, wenn keine weiteren längeren Wörter angegeben wurden.[/*:m:17vx256g]
  • Mehrere Suchwörter werden automatisch mit UND verknüpft (läßt sich das ändern?), denn:
    [list:17vx256g]
  • auch wenn eine Suchanfrage in Anführungsstriche eingeschlossen wird, wird nach jedem Wort einzeln gesucht, d.h. auf die Suchanfrage "Zweiter Weltkrieg" werden Seiten geliefert, die die Wörter "zweiter" und "Weltkrieg" (an beliebiger Stelle und in beliebiger Reihenfolge) enthalten.[/*:m:17vx256g]
[/*:m:17vx256g]
[*] Der Artikelinhalt wird im Rohtext (wie im Editiermodus sichtbar = Wikitext) durchsucht, welcher evtl. von der endgültig präsentierten Form abweichen kann. Beispiele:
  • Text, der von einem enthaltenen Template stammt, wird nicht gefunden[/*:m:17vx256g]
  • der Name einer Zielseite eines Links, der eine alternative Darstellung ('|') hat, wird gefunden[/*:m:17vx256g]
  • Worte, in denen eine weiche Worttrennung vorkommt, werden nicht als komplettes Wort gefunden (
    Code:
    Wort­trennung
    ).[/*:m:17vx256g]
[/*:m:17vx256g]
[*] Mit einem Minus vor einem Suchbegriff kann man alle Dokumente ausschließen, die dieses Wort enthalten.[/*:m:17vx256g]
[*] Stoppwortmechanismus evtl. nur englischsprachig? "MySQL-specific list of stopwords" http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html[/*:m:17vx256g][/list:u:17vx256g]
Wegen diesen unbefriedigenden Suchmöglichkeiten begann ich bewußt die Texte entsprechend zu formulieren:
  • potentielle Suchworte habe ich jeweils mit möglichst allen gebräuchlichen Formen, Schreibweisen und Synonymen innerhalb der Seite als Text formuliert[/*:m:17vx256g]
  • wenn Text-Formulierungen zu verkrampft oder einfach nicht passend waren, habe ich sie als unsichtbare Kommentare eingetragen.[/*:m:17vx256g]
Kennt jemand Möglichkeiten (Anleitungen) die wm-Suche aufzuwerten?
Interessant wären u.a.
  • Trunkierung (Wildcard)[/*:m:17vx256g]
  • ODER-Verknüpfung[/*:m:17vx256g]
  • Suche nach IP-Adressen (Maskierung als Text)[/*:m:17vx256g]
  • Integration einer deutschsprachigen Stoppwortliste[/*:m:17vx256g]
  • Integration einer Liste (deutschsprachiger) Synonyme[/*:m:17vx256g]
Update:
Ich vergaß meine verwendeten Versionen anzugeben:
MW 1.12.0 + PHP 5.2.6-2+b1 (apache2handler) + MySQL 5.0.51a-9+lenny2

Also, die Verwendung von * als Jokerzeichen funktioniert bei mir aktuell, Beispiel:
  • Kreuz* -> findet Kreuzchen und Kreuzregister[/*:m:17vx256g]
  • *register -> findet Register aber nicht Kreuzregister[/*:m:17vx256g]
  • ein in der Mitte eines Suchworts gesetztes Sternchen scheint das Wort in zwei einzelne Suchbegriffe zu teilen[/*:m:17vx256g]
Was ist eigentlich mit phonetischer Suche?

Update2:
Zusammengefaßte und weitere Erkenntnisse:
  • Als Unterstützung mit Jokerzeichen gibt es offensichtlich nur die Rechtstrunkierung mit *[/*:m:17vx256g]
  • eine deutschsprachigen Stoppwortliste läßt sich integrieren, jedoch mit den Umlauten will es nicht richtig klappen[/*:m:17vx256g]
  • Suche nach IP-Adressen und Datumsangaben (wie 11.08.08) kann nicht funktionieren, weil der Trennungspunkt ignoriert wird. Es wird anstelle dessen nach entsprechenden Einzelbegriffen gesucht. Ist als minimale Suchwortlänge 3 Zeichen zugelassen, wird z.B. 217.72.195.42 gefunden aber nicht 10.47.88.92, denn mindestens ein Suchbegriff muß die minimale Länge erfüllen. Die ft_min_word_len auf 1 zu setzen ist m.E. nicht sinnvoll.[/*:m:17vx256g]
Eine Anmerkung noch zum Feintuning der Stoppwortlisten. Beim Testen der Stoppworte sollte man beachten:
Will man ein bisheriges Stoppwort für die Suche wieder zulassen, so genügt es nicht, es aus der Stoppwortliste zu entfernen. Ein Neuaufbau des Index ist erforderlich.
Will man ein Wort zusätzlich als Stoppwort festlegen, so genügt es zunächst, es in die Stoppwortliste aufzunehmen (Neuindexieren optimiert natürlich den Index).

Update3:
Nun habe ich den Mechanismus mit der Stoppwortlichte auch begriffen. Je nach Wiki-Thema macht es Sinn eine vorbereitete Liste aus dem Internet zu laden und entsprechend anzupassen. Das Format der Liste ist ziemlich unkritisch. Die Worte werden durch eins gängiges Trennzeichen getrennt, praktischerweise jedes Wort auf eine separate Zeile. Umlaute und ggf. Sonderzeichen werden kodiert. Ein Blick in die Indextabelle hat das Rätsel gelöst:
Bsp.
unschu8c3b6n == unschön
aufgefu8c3bchrt == aufgeführt
universitu8c3a4t == universität
mau8c39fgeblich == maßgeblich

Somit bleiben als offene Punkte:
  • ODER-Verknüpfung[/*:m:17vx256g]
  • Entwertung des "." - um Datumsangaben und IP-Adressen suchen zu können[/*:m:17vx256g]
  • phonetische Suche[/*:m:17vx256g]

Auf eine Befreiung aus meinem Monolog hoffend ...

Viele Grüße

PS: Ich habe das Gefühl in diesem Forum ist die kritische Masse noch nicht erreicht, schade :(
 

labalena

Neues Mitglied
Registrierter Benutzer
11. November 2008
7
0
1
Suchfunktion mit "automatischer" Wildcard

Hallo zusammen,

ich habe eine Frage bezüglich der Wildcards. Kennt jemand eine Möglichkeit, dass Wörter automatisch mit Wildcard gesucht werden. Das Beispiel Pferd und Pferdestärke von Mediawiki treibt mich noch in den Wahnsinn, weil ich, wenn ich Pferd suche, genau auch Pferdestärke finden will. :roll:

Meine Mediawiki-Version ist 1.13.2. (Läuft im Moment noch zum Test mit aktuellem apache).

Vielen Dank für Ideen und Tipps! :idea:
 

Quartalsnichttrinker

Neues Mitglied
Registrierter Benutzer
8. August 2008
27
0
1
Re: Suchfunktion mit "automatischer" Wildcard

labalena schrieb:
Das Beispiel Pferd und Pferdestärke von Mediawiki treibt mich noch in den Wahnsinn
Siehe dazu: sueddeutsche.de: Schaffenskraft - Genie dank Wahnsinn

Die Verwendung des Sternchens als Platzhalter (nur am Ende von Suchbegriffen) ist seit MW 1.12 (oder bereits vorher?) möglich.

:idea: Sicherlich läßt sich das Sternchen per PHP-Code automatisch an den Suchbegriff anhängen ...

Die standardmäßige MW-Volltext-Suche basiert auf der entsprechenden Suchfunktion der darunterliegenden Datenbank. Die Einstellmöglichkeiten sind bisher eher bescheiden. Mehr als die Anpassung der Suchwortlänge und die Integration einer deutschwörtrige Stoppwortliste ist kaum möglich. Irgendwo gab es noch eine Einstellung zum Suchverhalten - wo und wofür ist mir leider entfallen.
Bei mir sieht es momentan so aus:
Code:
/etc/mysql/my.cnf
# * Volltextsuche fine-tuning
# Standard (Vorgabewerte):
#
# ft_boolean_syntax        | + -><()~*:""&|
# ft_max_word_len          | 84
# ft_min_word_len          | 4
# ft_query_expansion_limit | 20
# ft_stopword_file         | (built-in)
#
ft_min_word_len=3
ft_stopword_file = /etc/mysql/stopwords.txt
Keine Erfahrungen habe ich bisher mit dem Aufsetzen und Andocken von zusätzlichen Such-Lösungen.
:idea: Dazu sind entsprechende MW-Erweiterungen aktuell vefügbar:
[/*:m:1498zely]
[*]Hyper Estraier
[/*:m:1498zely]
[*]Sphinx Search (inkl. Did-you-mean Funktion)
[/*:m:1498zely][/list:u:1498zely]

Soweit meine Ideen zu der Suchproblematik ...

Viel Erfolg!
(Schön, wenn Du Deine Lösung zurückmelden könntest)
 

labalena

Neues Mitglied
Registrierter Benutzer
11. November 2008
7
0
1
ich habe nun nach langem Suchen etwas gefunden, was funktioniert. Man ersetzt die "function searchText" in der Datei "includes/SearchMySQL.php" mit folgendem Code:

function searchText( $term ) {
$resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ).'*', true ) ) );
return new MySQLSearchResultSet( $resultSet, $this->searchTerms );

Die Info habe ich von: http://www.mediawiki.org/wiki/Help_talk:Searching
--> Danke :D

Blöderweise funktioniert diese "automatische Wildcard" nicht als Prefix. Wie ich den Code dahigehend umschreiben kann, weiß ich leider nicht. Die Installation von Sphinx und co habe ich nicht hinbekommen und suche daher nach einfachen Lösungen. :cry: Aber eigentlich wären die wohl besser...
 

Quartalsnichttrinker

Neues Mitglied
Registrierter Benutzer
8. August 2008
27
0
1
labalena schrieb:
ich habe nun nach langem Suchen etwas gefunden, was funktioniert. ...(Code siehe vorangegangener Beitrag von labalena)
Prima! Das werde ich bei mir auch so einbauen, schon deshalb, weil mein Wiki noch nicht so umfangreich ist und die Suche derzeit nur wenige Treffer liefert.
labalena schrieb:
Blöderweise funktioniert diese "automatische Wildcard" nicht als Prefix. Wie ich den Code dahigehend umschreiben kann, weiß ich leider nicht.
Falls es die Möglichkeiten von der MySQL-Volltextsuche nicht hergeben, wird es m.E. nicht so einfach möglich sein.

carsten-3m schrieb:
... um wenigstens rudimentär mit Platzhaltern suchen zu können: Extension:Wildcard_search
Vielen Dank auch für diesen Hinweis. Da ich die MW-Suchfunktionalität "früher" nicht getestet hatte, ist mir nicht aufgefallen, daß bei früheren MW-Versionen garkeine Suche mit Platzhalten - auch nicht am Ende von Suchbegriffen - möglich war.

Gibt es eigentlich andere MySQL-basierende Anwendungen, die eine komfortablere Suche bieten?
Dann müßte das doch auch für Mediawiki realisierbar sein ...

Viele Grüße
 

labalena

Neues Mitglied
Registrierter Benutzer
11. November 2008
7
0
1
Mit der Extension inputbox kann man das Problem nun doch lösen. Zusätzlich zu der Wildcard am Ende kann man hier ein prefix einfach einstellen und sich auf jeder beliebigen Seite eine Suchbox einrichten, die dann eine echt Volltext-Suche macht. :D Bestimmt kann man das auch irgend in die Sitebar einbauen. Sonst muss es halt auf die Startseite. ;)

http://www.mediawiki.org/wiki/Extension:Inputbox