Zend Lucene: QueryParser oder eigene Lösung?
Mastershrimp
- programmiertechnik
Hi zusammen,
setzt irgendjemand von euch die PHP Implementierung von Lucene ein? Die aus dem Zend-FW mein ich.
Ich hab die gerade erfolgreich eingebaut und überlege nun, inwiefern meine Lösung öffentlichkeitstauglich ist. Denn um das Query-Objekt zu erhalten benutze ich einfach den Query-Parser (Zend_Search_Lucene_Search_QueryParser::parse()) und stopf den User-Input direkt rein.
Da klingeln natürlich erstmal sämtliche Alarmglocken - denn der User kann nun direkt eintippen was in den Parser gesteckt werden soll. Bei SQL tödlich - hier auch? Denn eigentlich sollte man damit ja nichts kaputt machen können...schlimmstenfalls kommen halt keine Suchergebnisse.
Stimmt allerdings nicht ganz, denn wenn der User irgendeinen merkwürdigen Suchstring eintippt, der Sonderzeichen (+-()~ usw) enthält, auf die Lucene reagiert, bekommt er ohne es zu wissen einen unerwünschtes Suchergebnis oder gar einen Parsing Error.
Deshalb würde ich schon gerne irgendwie was eigenes haben. Nix dolles, nur einfach die Suchworte nach " " gesplittet und als einzelne Terms an Lucene übergeben. In der Docu steht wie man Multiterm-Queries aufsetzt - allerdings klappt das bei mir nicht so ganz wie beim klassischen Parser. Erkenne ich primär daran, dass die Suchwörter alle in der gleichen Farbe gehighlightet sind. Ka was das (implizit) bedeutet, aber irgendwie scheint das dann ja anders zu sein als beim klassischen Parser.
Deshalb wollte ich mal fragen wie ihr das gelöst habt :) Und ob ihr Nachteile/Gefahren seht, wenn man den klassischen Parser einsetzt.
Viele Grüße
Mastershrimp