Hallo Michael
Frage:
Kann man nicht je Suchbegriff eine Liste (@Array) aufbauen und diese dann jeweils nach der Mengenlehre verarbeiten.
z.B.
$LeftItem OPERATOR $RightItem
wenn OPERATOR = OR:
@Result = @LeftResults;
push(@Result,@RightResult);
wenn OPERATOR = AND:
foreach @LeftResult
{
if($_ eq $RightResult[$i])
{ push(@Result,$_) }
$i++;
}
Die OPs NOT, -, + setzen ein bestehendes Resultset voraus.
Bei NOT, bzw. - werden die Einträge in @RightResult aus dem Resultset @LeftResult entfernt.
Der + Operator macht aber nur bei einer OR-Verknüpfung Sinn.
Dazu müsste das Leerzeichen aber als OR-Verknüpfung interpretiert werden und nicht als AND.
Für den Near-Operator müsste in jedem Eintrag jeweils eine Datenstruktur enthalten sein, die sowohl das Dokument und die Position des Suchbegriffs vom Textanfang (ermittelt über die Funktion index() ) enthält. Daraus lässt sich die relative Nähe ermitteln. Die Datenstruktur kann einerseits eine Referenz auf ein weiteres Array sein, kann aber auch ein Skalar mit definiertem Separator-Zeichen (z.B. '' ) sein.
Damit das Ganze richtig schnell wird könnte es sinnvoll sein, Indexdateien zu erzeugen, auf die dann für die Suche zugegriffen wird.
Hoffentlich rauben Dir meine Vorstellungen nicht gleich den Mut. Sie sind _wirklich_ nur als Diskusionsbeiträge gedacht und könen natürlich auch ignoriert werden.
Grüsse
Tom