voll-text suchmaschine bei bestehenden HTML-Seiten
daniel
- php
hallo und schönen abend alle zusammen,
ich habe ein kleines problemchen.
mein chef will eine (volltext-)suchmaschine in unser intranet integrieren.
soweit eigentlich keine sache. allerdings wüßte ich nicht, wie man sowas unter den gegebenen umständen mit vertretbarem aufwand angehen sollte, aber bevor ich seine träume kaputt mache, würde mich mal eure meinung dazu intressieren.
folgende ausgangssituation:
es besteht ein intranet, rein statisch, aus ca. 400-500 HTML-Dokumenten, die mehr oder weniger (eher weniger) "logisch" abgelegt sind - recht chaotischer zustand.
das intranet ist von außen nicht zugänglich und es sollen auch keine informationen ins internet kommen (logisch).
damit fallen leider auch externe anbieter wie bspw. atomz.com weg.
als server wird seit kurzem ein apache benutzt, was jetzt endlich auch die nutzung von PHP ermöglicht. ein mySQL server kann ebenfalls mitbenutzt werden.
die suche soll voll-text-basierend sein.
wie würdet ihr bei sowas anfangen?
oder sagt ihr auch, daß sowas bei den vorraussetzungen nicht in vertretbarem aufwand zu machen ist?
vielen dank im voraus für euer feedback,
bin mal gespannt, was ihr dazu meint...
grüße,
daniel
Hallo Daniel,
wie würdet ihr bei sowas anfangen?
Ich würde etwas Vorgefertigtes nehmen. Es gibt z.B. ht://Dig (http://www.htdig.org/) - allerdings nur für UNIX-Systeme. Das würde die kühnsten Vorstellungen Deines Chefs vmtl. sprengen.
Wenn das nicht klappt, dann kannst Du immer noch so eine Funktionalität selbst realisieren (das wäre jetzt ein sehr simpler Ansatz, es gibt noch viele weitere):
1. Ein Programm, das alle Dateien regelmäßig (z.B. Mitternacht) abarbeitet und alle Wörter, die es findet, und wo sie herkamen in einer MySQL-Tabelle reinschreibt. Evtl. solltest Du bestimmte Wörter (und, der, in, auf, und so weiter) von der Indizierung ausschließen.
2. Das Script liest die Tabelle nach diesem Wort aus und gibt dann die passenden Seiten aus.
oder sagt ihr auch, daß sowas bei den vorraussetzungen nicht in vertretbarem aufwand zu machen ist?
Doch, der Aufwand ist IMHO sehr wohl vertretbar. Wie viele Kenntnisse/Erfahrung über/mit PHP und MySQL hast Du und wie lange bist Du bereit zu arbeiten? Davon hängt das ganze ab. Wenn es nur 400-500 Seiten sind, muss das ganze nicht einmal sehr performant sein.
Grüße,
Christian
Hallo Daniel,
wie würdet ihr bei sowas anfangen?
Ich würde etwas Vorgefertigtes nehmen. Es gibt z.B. ht://Dig (http://www.htdig.org/) - allerdings nur für UNIX-Systeme. Das würde die kühnsten Vorstellungen Deines Chefs vmtl. sprengen.
Wenn das nicht klappt, dann kannst Du immer noch so eine Funktionalität selbst realisieren (das wäre jetzt ein sehr simpler Ansatz, es gibt noch viele weitere):
Ein Programm, das alle Dateien regelmäßig (z.B. Mitternacht) abarbeitet und alle Wörter, die es findet, und wo sie herkamen in einer MySQL-Tabelle reinschreibt. Evtl. solltest Du bestimmte Wörter (und, der, in, auf, und so weiter) von der Indizierung ausschließen.
Das Script liest die Tabelle nach diesem Wort aus und gibt dann die passenden Seiten aus.
oder sagt ihr auch, daß sowas bei den vorraussetzungen nicht in vertretbarem aufwand zu machen ist?
Doch, der Aufwand ist IMHO sehr wohl vertretbar. Wie viele Kenntnisse/Erfahrung über/mit PHP und MySQL hast Du und wie lange bist Du bereit zu arbeiten? Davon hängt das ganze ab. Wenn es nur 400-500 Seiten sind, muss das ganze nicht einmal sehr performant sein.
Grüße,
Christian
hi christian,
der apache setzt auf einem linux-system auf, von daher werde ich mir jetzt dieses htdig wohl gleich mal genauer ansehen gehen.
ich finde deinen ansatz schon recht intressant, mein problem war ja mehr, daß mir eine idee gefehlt hat, mit der man das ganze angehen könnte.
meine sql-kenntnisse sind ganz ok denke ich mal und was php angeht...
naja, es geht schon - bisher hat hinterher noch alles funktioniert woran ich mich versucht habe.
mein eigentlich job hatte damit eigentlich nie was zu tun, mehr mit dem hosting und der netzwerk-seite der ganzen sache.
insofern hab ich es halt nie "richtig" gelernt, aber learning-by-doing hat auch noch keinem geschadet.
das programm, das du ansprichst:
du meinst, einfach eine art kleiner spider, der mir nachts das gesamte document-root des intranets durchkämmt?
hmmm..... intressante idee, aber zumindest ein solches programm wäre doch sicher nicht auf php-basis zu erstellen , oder?
grüße,
daniel
Hallo Daniel,
hmmm..... intressante idee, aber zumindest ein solches programm wäre doch sicher nicht auf php-basis zu erstellen , oder?
Kommt darauf an. Lieber ein Script in PHP, das gut geschrieben ist (weil Du PHP beherschst) als ein Programm in C, das schlecht geschrieben ist. (das war jetzt nur ein Beispiel) Du kannst ja PHP auch als Kommandozeilentool verwenden. Weiter unten gibt es noch einen Thread zu Geschwindigkeiten von Programmiersprachen, vielleicht schaust Du da mal rein...
Grüße,
Christian
Moin!
mein chef will eine (volltext-)suchmaschine in unser intranet integrieren.
soweit eigentlich keine sache. allerdings wüßte ich nicht, wie man sowas unter den gegebenen umständen mit vertretbarem aufwand angehen sollte, aber bevor ich seine träume kaputt mache, würde mich mal eure meinung dazu intressieren.
Geht nicht gibts nicht. Ist alles nur eine Frage der Performance.
es besteht ein intranet, rein statisch, aus ca. 400-500 HTML-Dokumenten, die mehr oder weniger (eher weniger) "logisch" abgelegt sind - recht chaotischer zustand.
Die sind aber doch alle im Verzeichnisbaum unterhalb des DOCUMENT_ROOT. Also kannst du ein Skript schreiben, welches den DOCUMENT_ROOT und alle Unterverzeichnisse nach (HTML-)Dateien durchsucht und diese Dateien dann nach dem gesuchten Text. Ist in PHP schätzungsweise in nicht mehr als 30 Zeilen erledigt. Nur dauert das möglicherweise eine Weile, weil natürlich viel Festplattenperformance notwendig ist - für jede Suche erneut.
Bessere Ergebnisausgabe kriegst du, wenn du die Fundstellen noch bewertest:
Anhand der Bewertung sortierst du deine Fundstellen dann und gibst sie aus.
als server wird seit kurzem ein apache benutzt, was jetzt endlich auch die nutzung von PHP ermöglicht. ein mySQL server kann ebenfalls mitbenutzt werden.
MySQL kann dir eventuell helfen - aber der Volltext-Index, den es dort gibt, ist nicht unbedingt das, was du willst, weil du keinen Einfluß auf das Suchergebnis hast. Feinfühliger gehts eben mit einer eigenen Suchprozedur.
oder sagt ihr auch, daß sowas bei den vorraussetzungen nicht in vertretbarem aufwand zu machen ist?
Nein, eine kleine Suche zu programmieren ist erstens nicht sonderlich aufwendig, und zweitens sehr lehrreich.
Spannend wird's nur, wenn Performance gefragt ist. Dann _kann_ man mit Index-Dateien vielleicht mehr Erfolg haben (was dann aber keine Volltextsuche ist), oder mit einer anderen Datenhaltung (indem man die Inhalte der Dateien in einer schnelleren Datenstruktur verfügbar macht, beispielsweise in einer einzigen Datei gesammelt).
Bedenke: Die Suche dieses Forums durchsucht als Volltextsuche ebenfalls den kompletten Datenbestand innerhalb der Dateien. Das dauert, weil mal eben 300 Megabyte durchsucht werden könnten, aber es funktioniert.
hallo,
erstmal vielen dank euch beiden und sorry für das volle zitieren in meinem anderen posting... ich hab vergessen es vor dem abschicken zu löschen - sorry!
ich finde die ansätze sehr intressant, besonders der von sven gefällt mir recht gut.
ich werd da jetzt mal in ruhe drüber nachdenken und mich dann wohl später irgendwann nochmal melden.
auf jeden fall habt ihr mir echt sehr geholfen....
das nachfragen hier lohnt sich doch immer wieder ;-)))
viele grüße und sicher bis bald,
daniel
Moin!
ich werd da jetzt mal in ruhe drüber nachdenken und mich dann wohl später irgendwann nochmal melden.
Jetzt wo Christian ht://dig in mein Gedächtnis zurückgerufen hat: Damit kriegst du auch eine sehr schöne Suchmöglichkeit hin. Ich hab's vor Jahren mal auf meinem lokalen Intranetserver installiert, und es hat mir immer sehr schön SelfHTML und die Selfforum-Einträge (damals noch als Download verfügbar) durchsucht - wenn man nicht mit DSL online ist, eine wirklich gute Ersatzsuche!
Ich würde mir an deiner Stelle das Tool mal genauer ansehen. Die Installation ist eigentlich recht simpel, und da es Template-basiert arbeitet, kannst du die Ergebnisseiten sogar deinen Bedürfnissen (sprich: der CI im Intranet, sofern vorhanden) individuell anpassen.