php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.03.2010, 15:30  
Erfahrener Benutzer
 
Benutzerbild von Andreas
 
Registriert seit: 22.04.2005
Beiträge: 392
Andreas ist zur Zeit noch ein unbeschriebenes Blatt
Standard "Professionelle" Suchmaschine für eine Webseite

Hallo zusammen,

ich möchte eine AJAX-basierte Suchfunktion für eine statische HTML-Seite entwerfen. Durch relativ hohes Besucheraufkommen (20000 Seitenaufrufe pro Tag) habe ich ein statisches HTML-Konstrukt statt einer dynamischen Webanwendung. Auf dem Server ist aber PHP vorinstalliert und die AJAX-Komponente soll auf ein PHP-Script als eine Art Webservice zugreifen.

Ausgangsbasis für meine "Idee" war der Artikel Volltextsuche - php bar

Die ganze Anwendung soll grob später aus folgenden Komponenten bestehen:
1.) Crawler - Läuft alle Seiten einer bestimmten Domain ab und "zieht" den HTML-Content
2.) Indexer - Wertet den HTML-Content aus, indexiert ihn und speichert die Ergebnisse in einer Microsoft SQL Server Datenbank (Ähnlich dem Artikel auf PHP Bar)
3.) Web-Service Komponente in PHP - Bereitet die Datenbankinformationen auf und stellt sie als XML / CSV / etc.... für das AJAX-Script bereit (Bewertung, Reihenfolge der Ergebnisse hier berechnen?)
4.) AJAX-Komponente - Übernimmt die Darstellung der Suchergebnisse

Den Crawler / Indexer wollte ich in einem Stück über eine Java-Software realisieren, als Basis soll dabei (wahrscheinlich) Crawler4j verwendet werden, falls niemand einen besseren Vorschlag hat.

Ich persönlich würde darüber hinaus gerne Suchalgorithmen von gängigen Suchmaschinen analysieren und schauen, ob ich daraus noch Informationen ziehen kann, die für meine Einzel-Seitensuche von Belang sind. Dabei geht es um die Analyse von Suchanfragen, Bewertung von Ergebnissen und die Vorgehensweise beim Indexieren und vor allem, in welcher Komponente diese Vorgänge stattfinden.

Ein Beispiel macht sicher klar, was mich interessiert:
Google scheint die Seiten und deren Inhalt schon im Vorfeld zu "bewerten", so das beim späteren Durchsuchen die Reihenfolge der Ergebnisse bereits feststeht. Der Kernpunkt wäre hier wahrscheinlich die Indexierung und die Aufnahme der Begriffe / Wortkombinationen.

Meine hauptsächlichen Fragen lauten nun:
Ist die Vorgehensweise im Artikel auf phpbar "professionell" oder gibt es da professionellere Ansätze?
Hast jemand zu dem Thema Literaturempfehlungen für mich?
Kann man das Vorgehen einer Suchmaschine wie Google (in dem Fall sicher ein Betriebsgeheimnis, aber ich meine ähnlich "ausgereifte" Suchmechanismen) irgendwo nachvollziehen und/oder nachbauen (inkl. Bewertungsmechanismen, Berücksichtigung von h1-h7, title etc.)?

Ich würde gerne diesbezüglich ein paar weitere Gedanken austauschen und Tipps wären ganz toll.

Vielen Dank

Andreas
Andreas ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.03.2010, 15:40  
Neuer Benutzer
 
Registriert seit: 06.09.2003
Beiträge: 14
McLain
Standard

Hi,

gerade in dem Bereich gibt es gute und bewährte Tools, die du vielleicht nutzen kannst, wenn auch nur um abzuschauen. Du solltest dir mal das Apache Lucene Projekt bzw. Solr, sowie Xapian anschauen. Da gibt es eine Menge an Information, die dir nützlich sein sollte.

Grüße,
McLain
McLain ist offline   Mit Zitat antworten
Alt 12.03.2010, 10:35  
Erfahrener Benutzer
 
Benutzerbild von Andreas
 
Registriert seit: 22.04.2005
Beiträge: 392
Andreas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

ja das mit den Tools ist so eine Sache. Grundsätzlich ist klar, es gibt sicher performante Lösungen, die sehr sinnvoll eingesetzt werden können. Mir geht es aber darum, den Vorgang eines "Suchmechanismus" genau zu verstehen bzw. verschiedene Möglichkeiten zu erforschen und optimal zu nutzen. Nicht darum irgend ein "Tool" zu installieren und zu schaun, ob es meinen Anforderungen entspricht.

ABER: Die Dokumentation der genannten Tools und der Quellcode helfen mir vielleicht schonmal weiter. Natürlich ist die Analyse davon sehr mühselig und ich wäre für weitere Beiträge von Leuten, die sich mit der Thematik einer "eigenen" Suchmaschine bereits auseinander gesetzt haben, sehr dankbar.

Ein Stand der Technik wäre ebenfalls hilfreich. Was gibt es für neue Verfahren, wo werden sie eingesetzt, etc...

Als Hinweis:
Suchmaschinen Doktor bietet bereits einige dieser Informationen
Andreas ist offline   Mit Zitat antworten
Alt 12.03.2010, 12:31  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.256
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Kann mich nur an einige recht gute Artikel der ct über die Funktionsweise von Google wie auch über Lucene erinnern..
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 13.03.2010, 10:47  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Andreas,

wie per PN besprochen, möchte ich dir einige Hinweise zur Architektur einer Suche geben.

1. Suche:
Such-Algorithmen sind per so schon mal nicht unkomplex, mischt man diese noch mit schlauen Bewertungs-Algorithmen und Boost-Faktoren wie bei click-based-ranking o..ä. wird es schnell sehr philosophisch. Hier würde ich dir für den Anfang eine einfache Vorgehensweise empfehlen, ausbauen kann man das immer noch.

2. Indizierung:
In diesem Bereich gibt es mehrere Ansätze - vor allem aber die Entscheidung zu einer Technologie für das Backend. Im PHP-Bereich kannst du (möchtest du auf Lucene setzen) Zend_Lucene nutzen. Ist grundsätzlich binär-kompatibel zur Java-Version, hat jedoch hinsichtlich der Indizierung massive Performance-Probleme (Stand vor 8 Monaten). Hier könnte man jedoch über eine Kombination nachdenken: Indizierung per Java, auslesen per PHP. Sofern man aber schon JAVA einsetzt, bietet sich besser eine Webservice oder - als leichtere Alternative - XML over HTTP an. Für direkte Verarbeitung in JavaScript-Anwendungen sollte JSON zum Einsatz kommen, dann ist keine Konvertierung mehr notwendig.
Alternativ zu Lucene im PHP-Bereich bietet sich tatsächlich die Vorgehensweise von phpbar.de an. Das ist ein Ansatz der sich als "Schreiben komplex, Lesen verdammt schnell" zusammenfassen lässt. Ich habe diesen beispielsweise auf der APF-Seite im Einsatz und bin sehr zufrieden. Die Indizierung ist zwar etwas aufwendiger, aber nicht so komplex, dass man das Konstrukt nicht einfach aufsetzen könnte (Beispiel findest du im APF-SVN).

Im JAVA-Bereich bieten sich die Tools an, die bereits genannt wurden, Lucene in Kombination mit diversen Plugins und AddOns bieten dir eine Breite Basis für die Dokument-basierte Indizierung. Hier sollte für eine PHP-Applikation eine - wie oben genannte - Schnittstelle existieren, die Suchanfragen formulieren lässt und Ergebnisse im gewünschten Format ausliefert. Insgesamt bleibt jedoch zu überlegen, welche Zusammenhänge (Referenzen unter den Dokumenten, ...) und Attribute (Boost-Faktoren, Click- und Tracking-Werte, Relevanzen, ...) du zu Dokumenten speichern möchtest. Das bestimmt IMHO maßgeblich die Indizierung.

3. Auslieferung:
Die Auslieferung zu bewerten ist maßgeblich an der verwendeten Technologie gebunden. Im JAVA-Bereich gibt es rund um Lucene einige nette JSF-Controls, die Such-Ergebnis-Seiten richtig einfach gestalten lassen. Im PHP-Bereich gibt es sicher auch einige Tools, die man schon fertig einsetzen kann (vielleicht jQuery-Plugins?). Hier ist jedoch die Performance nicht zu vernachlässigen. Wenn du 20000 Besucher erwartest, dann sind hier vielleicht 1.000 Such-Anfragen (5%) dabei - sofern du diese prominent platzierst. In diesem Bereich sollten Hardware-Auslegung des Such-Backends keine Rolle spielen, das lässt sich selbst mit einer Datenbank-basierten Suche relativ entspannt abfackeln. Kritisch wird das erst im Bereich 500.000 - 1.000.000 Suchen pro Tag. Hier kann man sich tatsächlich überlegen, ob ein File-basierter Index nicht schneller ist als eine Datenbank (was in der Regel mit "ja" zu beantworten ist).

4. Literatur:
Professionell ist IMHO alles, was seiner Aufgabe in eleganter Art und Weise gerecht wird und zudem noch Puffer nach oben lässt (Skalierungs-Konzepte, ...). Den Aufbau von Google kannst du im Groben unter The Anatomy of a Search Engine nachlesen, unter Architektur von Suchmaschinen – Teil 1 | News Navigators gebloggt findest du weitere Stellen zum nachlesen. Für die von dir genannten Anforderungen ist so etwas jedoch IMHO noch nicht notwendig.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 18.03.2010, 18:11  
Erfahrener Benutzer
 
Benutzerbild von Andreas
 
Registriert seit: 22.04.2005
Beiträge: 392
Andreas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo zusammen,

danke für die wirklich qualifizierten Antworten. Ich denke das hilft mir schonmal ein gutes Stück weiter in meinem Vorhaben.

Ich werde jetzt mal damit beginnen, ein paar Vorstudien zu machen und Literatur zu wälzen. Da fällt mir dann sicher noch so das ein oder andere auf / ein.

Viele Grüße

Andreas
Andreas ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Countdownschleife auf webseite anzeigen lassen BlackKnight PHP Tipps 2010 6 26.01.2010 03:32
Suchmaschine mittels Get XSS Datenbock PHP Tipps 2009 3 31.08.2009 15:05
Zero: Die neue Suchmaschine sucht weitere Helfer WestsidersX Beitragsarchiv 47 08.07.2009 18:55
Funktion in Code für Suchmaschine german.Playboy HTML, Usability und Barrierefreiheit 17 03.12.2008 10:30
Komplette Webseite bleibt "stehen" crazyhead PHP-Fortgeschrittene 4 01.09.2007 17:58
Webseite auslesen Katrin PHP Tipps 2006 6 21.04.2006 20:43
FireFox Suchmaschine entfernen Off-Topic Diskussionen 4 08.12.2005 15:49
rss/xml Feeds auf Webseite einbinden PHP Tipps 2005-2 2 29.10.2005 13:44
[Erledigt] Frage zu Webseite PHP Tipps 2005-2 1 26.10.2005 21:18
Mehrsprachige Webseite PHP Tipps 2005-2 4 08.07.2005 08:19
[Erledigt] Automatisches neu laden der ganzen Webseite HTML, Usability und Barrierefreiheit 7 26.01.2005 08:38
benötige suchmaschine Beitragsarchiv 3 26.10.2004 00:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/software-design/65598-professionelle-suchmaschine-fuer-eine-webseite.html, php suchmaschine, professionelle suchmaschine, professionelles suchmaschinen script, php suchmaschinen script, suchmaschinen script, lucene php, suchmaschine script, suchmaschine php, crawler4j, suchmaschinen script php, php lucene alternative, suchmaschine für die webseite, boost-faktoren, php volltextsuche script, volltextsuche php script, script suchmaschine, dokumente indizieren php, suchmaschine php script, ajax script suchmaschine

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum