Suchmaschine
RFZ
- php
Moin,
ich habe bereits eine Suchmaschine für meine Site erstellt, da allerdings die Suchzeit zwischen 0.01 und 200sec variiert *g* frag ich mich wie ich es besser lösen kann.
Meine Datenbank beinhaltet über 22000 Artikel, wichtig sind da 2 Felder, Titel und Inhalt, welche durchsucht werden. Ich kann den Inhalt nicht kürzen (ich, du, das usw. entfernen) weil er auch ausgegeben werden soll. Ein query würde dann so aussehen:
SELECT titel, inhalt, datum FROM artikel WHERE ((inhalt LIKE '% such1%' OR titel LIKE '%such1%') AND (inhalt LIKE '% such2%' OR titel LIKE '%such2%')) ORDER BY id DESC LIMIT 0,10
Nun wüsst ich einfach gern, wie man soeine Suchmaschine am besten realisiert. Ausserdem versteh ich nicht warum die suche nach immer dem gleichen Begriff mal nur 0.1 und mal 20 sec dauert?!? Wie machen das denn die grossen Suchmaschinen wie z.B. google?
cu RFZ
Hi,
da allerdings die Suchzeit zwischen 0.01 und 200sec variiert
das DB-Layout ist nicht optimiert.
Ein query würde dann so aussehen:
Die SQL-Statements zählen mit zum DB-Layout. Auch sie müssen optimiert sein.
LIKE '% such1%'
So eine Anfrage lässt sich kaum performant lösen. Je nach DBMS steht u.U. ein Mechanismus zur Volltext-Indizierung zur Verfügung bzw. lässt sich einbinden. Die Anfrage muss dann anders aussehen; wie genau, wird Dir die Doku des DBMS bzw. der Erweiterung sagen.
Cheatah
So eine Anfrage lässt sich kaum performant lösen. Je nach DBMS steht u.U. ein Mechanismus zur Volltext-Indizierung zur Verfügung bzw. lässt sich einbinden. Die Anfrage muss dann anders aussehen; wie genau, wird Dir die Doku des DBMS bzw. der Erweiterung sagen.
Hehe, freut mich dass du anscheinend Ahnung davon hast, aber kannst du mir das auch ein bisschen verständlicher beibringen? *g* Oder haste nen Link dazu, wo ich mich schlau machen kann?
cu RFZ
Hi,
aber kannst du mir das auch ein bisschen verständlicher beibringen? *g*
den Abstraktionsgrad, den Du mit den in Deiner Frage gelieferten Informationen definiert hast, kann ich leider nicht verringern.
Oder haste nen Link dazu, wo ich mich schlau machen kann?
Ich gehe in Ermangelung anderer Hinweise davon aus, dass Dein DBMS Oracle heißt.
Cheatah
Hi,
Ich gehe in Ermangelung anderer Hinweise davon aus, dass Dein DBMS Oracle heißt.
Ach ja, ich kenne die Abkürzung DBMS nicht, aber könnte ja sowas wie DataBaseManagementSystem heissen??? *G* Dann muss ich aber mit MySQL antworten...
cu RFZ
Hi,
Ach ja, ich kenne die Abkürzung DBMS nicht, aber könnte ja sowas wie DataBaseManagementSystem heissen??? *G*
wenn das nur geraten war, dann sag mir doch bitte schnell die Lottozahlen von morgen... :-) Ja, exakt das.
Dann muss ich aber mit MySQL antworten...
Die Doku dazu liegt unter http://www.mysql.com/, wie Du sicher weißt. MySQL verfügt über die Möglichkeit, Fulltext-Indizes einzusetzen.
Cheatah
wenn das nur geraten war, dann sag mir doch bitte schnell die Lottozahlen von morgen... :-) Ja, exakt das.
hehe, wenn das auch so einfach wäre...
Die Doku dazu liegt unter http://www.mysql.com/, wie Du sicher weißt. MySQL verfügt über die Möglichkeit, Fulltext-Indizes einzusetzen.
das Stichwort Fulltext-Indizes hat mir einiges weiter geholfen, danke :)
cu RFZ
Hi!
Ach ja, ich kenne die Abkürzung DBMS nicht, aber könnte ja sowas wie DataBaseManagementSystem heissen??? *G* Dann muss ich aber mit MySQL antworten...
schau mal hier:http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#Fulltext_Search
Grüße
Andreas