Suchfunktion verstehen (unerwartete Ergebnisse?)

  • Nochmal wegen der 3-Zeichen-Suche: mir ist aufgefallen, dass wenn ich statt "Zen" "#Zen" in die Suchmaske eingebe, die Suche tatsächlich nach "Zen" sucht obwohl es nur 3 Zeichen hat und es nicht exakt so mit # in den Beiträgen steht. Was ja wegen der Hashtags auch vorkommen könnte. Damit kann man offenbar die Einschränkung austricksen? Es wird das Sonderzeichen weggelassen und dann doch nach "Zen" gesucht?


    Was die Hashtags angeht, da die ja nun im Core integriert sind, wäre es nicht sinnvoll, Hashtags in die Suchmaske mit aufzunehmen, damit man z.B. kombinieren kann: Suche alle Beiträge von "Mitglied" die den Hashtag "#Hashtag" haben und das Suchwort "Suchwort" im Text oder Betreff?

  • Damit kann man offenbar die Einschränkung austricksen?

    Nein, kann man nicht. Um es an dieser Stelle mal etwas deutlicher auszudrücken: Diese Beschränkung heißt nicht, dass Eingaben unter 4 Zeichen ignoriert werden, sondern dass Wörter < 4 Zeichen gar nicht erst in den Suchindex aufgenommen werden.


    Ich bin mir gerade nicht sicher, auf welcher Basis der Tokenizer vom Suchindex arbeitet. Es kann dadurch aber sein, dass #Zen als ein Wort erkannt wird und dadurch die 4-Zeichen-Grenze erreicht, die notwendig ist um im Index zu landen und gefunden zu werden.

    Alexander Ebert
    Senior Developer WoltLab® GmbH

  • Beispieltext:

    Code
    Irgendein Text mit Zen und so. Ach ja, habe ich schon von Zen gesprochen? Da gibt es auch ein neues Zentrum dazu!

    Was im Suchindex von MySQL ankommt:

    Code
    Irgendein Text habe schon gesprochen gibt auch neues Zentrum dazu


    Wenn du einen Begriff in die Suche eingibst und dabei keine Anführungszeichen verwendest, so wird der Suchbegriff automatisch um ein * erweitert, bei zen ist die effektive Abfrage eine Suche nach zen*. So wird auch klar, weshalb zentrum gefunden wird.


    Eines noch zur Hervorhebung in den Suchergebnissen / Themen: Diese Hervorhebung wird PHP-seitig vorgenommen und entspricht nicht zwangsläufig den Begriffen, die von MySQL auf Grund der Beschränkung gefunden wurden. Im obigen Beispieltext wären 2x Zen und 1x Zen(trum) markiert worden, auch wenn MySQL nur bei Zentrum einen Treffer gefunden hat.

    Alexander Ebert
    Senior Developer WoltLab® GmbH

  • Verstehe ich das richtig, dass die Sachen deswegen erscheinen, weil längere Worte im Index sind, die "Zen" enthalten, während das einzelne Wort "Zen" keine Rolle spielt, weil es nicht im Index ist? Ich hatte die Einschränkung so verstanden, dass Zen bei der Suche komplett ignoriert wird, weil es zu wenige Buchstaben hat. Das ist nämlich beim phpBB so und hat uns zur Verzweiflung getrieben, weil man nichts mehr gefunden hat. Auch wurden dort alle Begriffe ignoriert, die zu oft (im Index?) vorgekommen sind, was irgendwann bei 300.000 Beiträgen fast alle relevanten Begriffe sind. Dabei spielen sie ja vielleicht in Kombination mit den anderen eingegebenen Begriffen eine Rolle. Das scheint hier erheblich besser zu funktionieren, wir müssen einfach nur verstehen wie man es richtig nutzt! :)

  • Hallo,

    Verstehe ich das richtig, dass die Sachen deswegen erscheinen, weil längere Worte im Index sind, die "Zen" enthalten, während das einzelne Wort "Zen" keine Rolle spielt, weil es nicht im Index ist?

    korrekt. Stelle es dir so vor, als wenn der Beitrag an Leerzeichen aufgetrennt wird und dann alle Einzelkomponenten, die kürzer als 4 Zeichen sind gelöscht werden. Das was dann übrig ist landet im Suchindex (abgesehen von einigen wenigen Englischen Begriffen)


    Bei der eigentlichen Suche werden dann noch ein paar weitere Worte ignoriert (konkret die, die in mehr als 50% der Beiträge auftauchen).

  • Das mit den 50% macht auf jeden Fall Sinn, denn das sind selten Begriffe, die suchrelevant sind. Ich glaube beim phpBB ist es eine festgelegte Zahl. Bei 50% ist es ja egal, wie viele Beiträge ein Forum hat, bei einer festen Grenze verliert die Suche bei einem sehr grossen Forum komplett ihren Sinn.

  • Nochmal wegen der 3-Zeichen-Suche: mir ist aufgefallen, dass wenn ich statt "Zen" "#Zen" in die Suchmaske eingebe, die Suche tatsächlich nach "Zen" sucht obwohl es nur 3 Zeichen hat und es nicht exakt so mit # in den Beiträgen steht. Was ja wegen der Hashtags auch vorkommen könnte. Damit kann man offenbar die Einschränkung austricksen? Es wird das Sonderzeichen weggelassen und dann doch nach "Zen" gesucht?


    Was die Hashtags angeht, da die ja nun im Core integriert sind, wäre es nicht sinnvoll, Hashtags in die Suchmaske mit aufzunehmen, damit man z.B. kombinieren kann: Suche alle Beiträge von "Mitglied" die den Hashtag "#Hashtag" haben und das Suchwort "Suchwort" im Text oder Betreff?

    Hashtags im core?



    Grad im forum gelesen hashtags sollen im core sein? Nirgends vorher gelesen daher mal testen :)


    #hashtag plugin obsolete? :)


    Vielleicht

  • Das Plugin ermöglicht das Setzen von Hashtags aus Beiträgen mit der # - Schreibweise, von Haus aus kann nur der Threadersteller Tags setzen. Beides hat aber den gleichen Effekt und landet in der gleichen Schlagwort-Wolke und Tag-Suchfunktion. Nur dass die Tag-Suchfunktion leider nicht mit der Forensuche kombinierbar ist.

  • Von Haus aus ohne Plugin kann der Threadersteller Tags eintragen, die dann wie die Hashtags als Wolke erscheinen usw. Direkt in der Eingabemaske unter "Titel" usw. Wenn die Tag-Funktion eingeschaltet ist im ACP, that is.


    Die # - Hashtags aus den Beiträgen die über das Plugin dazu kommen, vermischen sich dann damit, wenn man das Plugin nutzt, dann kann jeder Tags jederzeit zum Thread hinzufügen.

  • Von Haus aus ohne Plugin kann der Threadersteller Tags eintragen, die dann wie die Hashtags als Wolke erscheinen usw. Direkt in der Eingabemaske unter "Titel" usw. Wenn die Tag-Funktion eingeschaltet ist im ACP, that is.

    Das ist richtig ;)


    Die # - Hashtags aus den Beiträgen die über das Plugin dazu kommen, vermischen sich dann damit, wenn man das Plugin nutzt, dann kann jeder Tags jederzeit zum Thread hinzufügen.

    Auch das ist korrekt ;)


    VIelleicht hatten wir auch aneinander vorbei geredet zu beginn.

    Ich hatte angenommen du meinst, dass die hashtags in Beiträgen automatisch erkannt werden, was sie nicht tun ohne das besagte PLugin.

  • Bei der eigentlichen Suche werden dann noch ein paar weitere Worte ignoriert (konkret die, die in mehr als 50% der Beiträge auftauchen).

    Das gilt nur für die Suche IN NATURAL MODE, diese verwenden wir aber nicht. Damit Suchoperatoren (z. B. begriff1 +begriff2 -begriff3) unterstützt werden, nutzen wir die boolsche Suche (IN BOOLEAN MODE) und die besitzt die 50%-Beschränkung nicht.

    Alexander Ebert
    Senior Developer WoltLab® GmbH

    • begriff => Sollte in den Ergebnissen vorkommen, muss aber nicht, Treffer werden höher gewertet, je mehr optionale Begriffe sie enthalten. Bei nur einem Begriff ist dies identisch zu +begriff
    • +begriff => Muss auf jeden Fall vorkommen
    • -begriff => Darf auf keinen Fall vorkommen
    • begriff* => Beziehe auch Treffer ein, bei denen die Begriffe mit dem Wort anfangen
    • "begriff" => Muss exakt so vorkommen, bei zen würde zentrum nicht übereinstimmen

    Faktisch gibt es aber eine implizite Umwandlung der Suchterme, damit sich die Suche entsprechend der allgemeinen Erwartungen verhält:

    hallo welt

    wird effektiv zu

    +hallo* +welt*

    umgeformt.


    Die Begriffe werden nur mit dem Sternchen erweitert, wenn sie nicht in Anführungszeichen stehen. Das Plus wird nur gesetzt, wenn der Begriff keinen vorangestellten Operator hat oder wenn der Begriff in Anführungszeichen steht. Aus "hallo welt" wird allerdings +"hallo welt", außer es steht bereits ein Operator vor dem Anführungszeichen.

    Alexander Ebert
    Senior Developer WoltLab® GmbH

  • Das ist echt interessant. Fände es gut, wenn ihr sowas in eine Dokumentation aufnehmen könntet! :)

    return null;


    Browser: Firefox Nightly (64bit)

    Betriebssystem: Windows 10

  • Gilt dies so eigentlich auch, wenn man das Plugin für elasticsearch verwendet?

    Gruß aus Südhessen