AW: [otrs-de] FAQ-Volltext-Suche: Eingabe mehrerer Suchwörter

Hallo,
ich habe die Such-Queries bei meiner Installation geändert. Nun wird die
MySQL Fulltext-Search verwendet. Leider benutze ich noch MySQL 3.X, bei dem
noch keine Boolschen Ausdrücke verwendet werden können.
Ich habe dazu folgende Fulltext-Indizes erstellt:
CREATE FULLTEXT INDEX fulltxt1 ON faq_item (f_subject, f_field1, f_field2, f_field3, f_field4, f_field5, f_field6);
CREATE FULLTEXT INDEX fulltxt2 ON faq_item (f_keywords);
In der Datei FAQ.pm habe ich die Funktion "Search" folgendermaßen abgeändert:
sub Search {
my $Self = shift;
my %Param = @_;
# check needed stuff
foreach (qw(UserID)) {
if (!$Param{$_}) {
$Self->{LogObject}->Log(Priority => 'error', Message => "Need $_!");
return;
}
}
my $SQL = "SELECT i.id";
$SQL .= " FROM faq_item i, faq_state s WHERE s.id = i.state_id ";
my $Ext = '';
if ($Param{What}) {
$Ext .= 'AND MATCH(f_subject, f_field1, f_field2, f_field3, f_field4, f_field5, f_field6) ';
$Ext .= "AGAINST ('";
$Ext .= $Self->{DBObject}->Quote($Param{What})."')";
# Ab MySQL 4 boolean Suche möglich, dann um " IN BOOLEAN MODE" ergänzen!
}
if ($Param{LanguageIDs} && ref($Param{LanguageIDs}) eq 'ARRAY' && @{$Param{LanguageIDs}}) {
$Ext .= " AND i.f_language_id IN (${\(join ', ', @{$Param{LanguageIDs}})} )";
}
if ($Param{CategoryIDs} && ref($Param{CategoryIDs}) eq 'ARRAY' && @{$Param{CategoryIDs}}) {
$Ext .= " AND i.category_id IN (${\(join ', ', @{$Param{CategoryIDs}})} )";
}
if ($Param{States} && ref($Param{States}) eq 'ARRAY' && @{$Param{States}}) {
$Ext .= " AND s.name IN ('${\(join '\', \'', @{$Param{States}})}')";
}
if ($Param{Keyword}) {
$Ext .= " AND MATCH(f_keywords) AGAINST ('".$Self->{DBObject}->Quote($Param{Keyword})."')";
}
$SQL .= $Ext;
my @List = ();
$Self->{DBObject}->Prepare(SQL => $SQL, Limit => 500);
while (my @Row = $Self->{DBObject}->FetchrowArray()) {
push (@List, $Row[0]);
}
return @List;
}
Gruß, Volker
-----Ursprüngliche Nachricht-----
Von: Robert Kehl [mailto:robert.kehl@otrs.de]
Gesendet: Montag, 23. Februar 2004 16:30
An: User questions and discussions about OTRS in German.
Betreff: Re: [otrs-de] FAQ-Volltext-Suche: Eingabe mehrerer Suchwörter
On Monday, February 23, 2004 4:17 PM
Maibaum, Volker
mir ist aufgefallen, dass bei der Volltextsuche und Stichwortsuche, die Eingabe mehrerer Stichwörter zu keinem Ergebnis führt, obwohl die Wörter in den FAQ-Artikeln vorkommen.
Beispiel: In einem Artikel kommt der Satz "Wie aktiviere ich dasds im Flug" vor. Wenn ich nach "wie aktiviere" suche, dann wird der Artikel gefunden. Suche ich nach "aktiviere wie", dann wird der Artikel nicht gefunden. Gleiches passiert bei der Suche nach Stichwörtern.
Ist für die Suche nach mehreren Wörten ein besonderer Syntax notwendig?
Nein, die FAQ-Abfragen sind alles LIKE-Abfragen, die die Suche nach mehreren Keywords nicht unterstützen, daher heisst auch die Feldbeschreibung nicht Keywords sondern Keyword. Gefunden werden mehrere Stichworte nur, wenn sie auch so im Datensatz hintereinander angegeben worden. Für OTRS ist das aber ein Stichwort. Gleiches gilt für die Volltextsuche, hier suchst Du *einen* Part aus den FAQs, einen Satzteil, Ausdruck, etc. hth, Robert Kehl -- ((otrs.de)) :: OTRS GmbH :: Norsk-Data-Str. 1 :: 61352 Bad Homburg http://www.otrs.de/ :: Tel. +49 (0)6172 4832388 _______________________________________________ OTRS Mailingliste: otrs-de - Webpage: http://otrs.org/ Archiv: http://lists.otrs.org/pipermail/otrs-de/ Listenabo verwalten: http://lists.otrs.org/cgi-bin/listinfo/otrs-de/ Support oder Consulting fuer Ihr OTRS System? => http://www.otrs.de/

On Tuesday, February 24, 2004 11:39 AM
Maibaum, Volker
ich habe die Such-Queries bei meiner Installation geändert. Nun wird die MySQL Fulltext-Search verwendet.
Hey, gut gemacht. Jetzt brauchen wir das noch für PostGreSql, Firebird/Interbase, MaxDB (SAP) und Oracle, machste mal schnell? ;) Heisst: So sehr wir auch auf die MySql-Schiene setzen, es muss nach Möglichkeit auch genauso mit den anderen DBs laufen. Ob dabei jeweils ein Fulltext-Index zum Einsatz kommt, ist unklar. Aber we'll see... Ein dickes Danke, Robert Kehl -- ((otrs.de)) :: OTRS GmbH :: Norsk-Data-Str. 1 :: 61352 Bad Homburg http://www.otrs.de/ :: Tel. +49 (0)6172 4832388
participants (2)
-
Maibaum, Volker
-
Robert Kehl