Hauptmenü

Bug: FAQ Suche nach Schlüsselwörter funktioniert nicht

Begonnen von wucherpfennig, 18.04.2018 16:27:42

⏪ vorheriges - nächstes ⏩

wucherpfennig

Hallo Zusammen

Wenn ich einen FAQ Eintrag mit den Schlüsselwörter "manual download" suchen möchte, dann sollte, gemäss Dokumentation folgende Suchbegriffe ein Resultat zurück geben.

* "manual+download"
* "manual||download"

Leider scheint das nicht der Fall zu sein und die Suche funktioniert nur bei

* "manual"
* "download"

Hintergrund: Dieses Verhalten ist uns aufgefallen, als wir das Sidebar Module "Relevante FAQ" aktivieren & konfigurieren wollten. Da funktioniert der "Searchmode" = "Keyword" nur mit einem Wort. Unabhängig von "MatchAll".

Kann dieses Verhalten über eine SysConfig Änderung angepasst werden oder handelt es sich hierbei um einen Bug?

Über ein kurzes Feedback würden wir uns freuen.

Beste Grüsse

wucherpfennig

wucherpfennig

Hallo Zusammen

Die FAQ Suche unterstützt tatsächlich keine Suche nach mehreren Keywords. Gem. Code werden die die Begriffe zu einem "einfachen" Like %...% kombiniert, was natürlich wenig sinnvoll ist.

Im Anhang sieht man die betroffene Code Section (Kernel/System/FAQSearch.pm). Kurze Tests haben gezeigt, dass wenn man im Falle einer (FAQ) Keywordsuche auf REGEXP umstellen würde, man bedeutend bessere Resultate erhalten würde.

Da sich meine Regex Kenntnisse stark auf ein Minimum begrenzen, würde ich es begrüssen, wenn mir jemand kurz den Regex sagen kann, damit man


        $Param{Keyword} = "\%$Param{Keyword}\%";
        $Param{Keyword} =~ s/\*/%/g;
        $Param{Keyword} =~ s/%%/%/g;
        $Param{Keyword} = $DBObject->Quote( $Param{Keyword}, 'Like' );


auf eine Suche, welche REGEXP konform ist, anpassen kann... (Leerzeichen, Sonderzeichen usw. entfernen und alles mit " | " verknüpfen).

Beste Grüsse

wucherpfennig

wucherpfennig

#2
Hallo Zusammen

Wir haben das nun folgendermassen pragmatisch gelöst:

Kopieren von


cp Kernel/System/KIXSidebarFAQ.pm Custom/Kernel/System/
cp Kernel/System/FAQSearch.pm Custom/Kernel/System/


und kleine Anpassungen in den Files:

# vim Custom/Kernel/System/FAQSearch.pm
495     # search for keywords
496     if ( $Param{Keyword} ) {
497         if ($Ext) {
498             $Ext .= ' AND';
499         }
500         $Param{Keyword} = "\%$Param{Keyword}\%";
501         $Param{Keyword} =~ s/\*/%/g;
502         $Param{Keyword} =~ s/%%/%/g;
503         $Param{Keyword} = $DBObject->Quote( $Param{Keyword}, 'Like' );
504
505         if ( $DBObject->GetDatabaseFunction('NoLowerInLargeText') ) {
506             $Ext .= " i.f_keywords LIKE '" . $Param{Keyword} . "' $Self->{LikeEscapeString}";
507         }
508         elsif ( $DBObject->GetDatabaseFunction('LcaseLikeInLargeText') ) {
509             $Ext
510                 .= " LCASE(i.f_keywords) LIKE LCASE('"
511                 . $Param{Keyword}
512                 . "') $Self->{LikeEscapeString}";
513         }
514         else {
515
516             $Param{Keyword} =~ s/['\%','\:','\+','\?','\*','\/']//g;
517             $Param{Keyword} =~ s/\|/ /g;
518             $Param{Keyword} =~ s/\b[a-zA-Z]{1,2}\b//g;
519             $Param{Keyword} =~ s/\ +/ /;
520             $Param{Keyword} =~ s/\s+/|/g;
521
522             $Ext
523                 .= " LOWER(i.f_keywords) REGEXP LOWER('"
524                 . $Param{Keyword}
525                 . "') $Self->{LikeEscapeString}";
526         }
527     }


und


# vim Custom/Kernel/System/KIXSidebarFAQ.pm
76     if ( $Param{SearchString} ) {
77
78         $Param{SearchMode} = $Param{SearchMode} || '';
79
80         $Param{SearchString} =~ s/\s\s/ /g;
81         if ( $Param{MatchAll} ) {
82             $Param{SearchString} =~ s/\s/&&/g;
83         }
84         elsif ( $Param{SearchMode} =~ m/^keyword$/i ){
85             $Param{SearchString} =~ s/\s/|/g;
86         }
87         else {
88             $Param{SearchString} =~ s/\s/||/g;
89         }
90
91         my %Search = ();
92         if ( $Param{SearchMode} =~ m/^keyword$/i ) {
93             $Search{Keyword} = $Param{SearchString};
94         }
95         elsif ( $Param{SearchMode} =~ m/^title$/i ) {
96             $Search{Title} = $Param{SearchString};
97         }
98         else {
99             $Search{What} = $Param{SearchString};
100         }
101


So funktioniert die automatische Keyword Suche besser.

Verbesserungspotential gibt es natürlich bei den REGEX Ausdrücken + die Umsetzung / Änderung der Suche in FAQSearch.pm wurde auch sehr "zügig" umgesetzt ;-).


Beste Grüsse


wucherpfennig

Tino Voigt

Hallo wucherpfennig,

ich konnte dieses Verhalten in der KIX Version 17.3 nicht nachvollziehen.

Welche KIX Version ist denn im Einsatz?

Viele Grüße, Tino Voigt

wucherpfennig

Hi Tino


Wir verwenden ebenfalls 17.3 und vorher kein OTRS im Einsatz (frische INstallation).


Beste Grüsse


wucherpfennig

Tino Voigt

Hallo wucherpfennig,

ich habe das Thema, an unsere Entwicklungsabteilung weitergegeben.

Viele Grüße, Tino Voigt

wucherpfennig

Hi Tino

Ich muss nochmals korrigieren. Wir hatten kein OTRS im Einsatz, sondern haben von KIX 16 hochgeupdatet...

Zu meiner "Lösung". Die funktioniert in den meisten fällen. Nur ist mir aufgefallen, dass zwischendurch folgender Fehler geworfen wird:

[:error] [pid 12277] Can't locate object method "FAQSearch" via package "Kernel::System::FAQ" at /opt/kix/Custom/Kernel/System/KIXSidebarFAQ.pm

Ich weiss, dass es sich um eine Custom Datei handelt, aber mein Perl ist doch arg eingeschränkt, so dass ich lange nach includes o.ä suchen gehen kann... Weiss jemand, wie ich diesen Fehler behebe?

Beste Grüsse

wucherpfennig

Tino Voigt

Hallo,

das Verhalten wurde von unserer Entwicklungsabteilung korrigiert und wird im Release 17.4.0 bereitgestellt.

Viele Grüße, Tino Voigt


wucherpfennig

Hi Tino

Vielen Dank für das Update. Es scheint alles zu funktionieren.

Beste Grüsse

wucherpfennig