phpbar.de logo

Mailinglisten-Archive

[php] Stringsuche

[php] Stringsuche

Oliver Kummerow naklar_(at)_altavista.net
Wed, 23 Jun 1999 07:47:30 +0200


Hallo Norbert,

> Darauf kam ich auch, kurz nach dem die Mail weg war, wie ueblich  ;-)

Merkwuerdig ist es schon...

> Und was mache ich nun mit der Volltext-Recherche ???
>    1. Der komplette Muenz
>    2. Das PHP-Manual

Im Prinzip ganz einfach (ebenfalls duck) ;-) :

Datenbank "MyFTSearch" anlegen.
Tabelle "woerter" erstellen
Tabelle "fundstellenzeile" erstellen
Tabelle "fundstellendatei" erstellen
Tabelle "w2f" (m:n-Relation) erstellen

Alle Text parsen mit einer Engine (muss nicht mal PHP sein), bei der
set_time_limit (0) funktioniert... und die Tabellen mit Worten und
Fundstellen fuellen. 

Datenstruktur:
woerter  -n:1-  w2f  -1:n-  fundstellenzeile  -n:1-  fundstellendatei

Abfrage:
select fundstellenzeile.linenumber, fundstellendatei.filename from
woerter 
where 'wort' like '$suchbegriff%'
and woerter.id = w2f.woerter_id
and fundstellenzeile.id = w2f.fzeile_id
and fundstellenzeile.fdatei_id = fundstellendatei.id;

Was fehlt, ist der Textpreview, der mit angezeigt wird. Da es sich um
lange Dateien handelt, muessten diese am besten in Kapitel zerlegt
werden. Oder es werden alternativ Kapitelpreviews, die wiederum von
fundstellenzeile referenziert werden, mit in die DB gepackt.

Oder so aehnlich... (und nicht vergessen, mir die fertige Engine zu
mailen ;-) )

Stringzerlegung: Spricht was dafuer, beim Parsen gleich die ganze Datei
zu lesen? Wenn die in 1k-Bloecken geparst wird, reicht das fuer
Wortextraktionen doch aus (oder???). Da ein Index 'eh offline gebuildet
wird, ist es auch egal, wenn's mal laenger als 30 Sekunden dauert. Die
Suche geht dafuer dann wohl in 0,1 Sekunden. 

Mit freundlichen Grüßen,
Oliver Kummerow
email: naklar_(at)_altavista.net


php::bar PHP Wiki   -   Listenarchive