RFZ: Suchmaschine

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

  1. 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

    1. 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

      1. 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?

        http://technet.oracle.com/docs/products/oracle8i/doc_library/817_doc/addendum.817/a85455/imt_adde.htm

        Ich gehe in Ermangelung anderer Hinweise davon aus, dass Dein DBMS Oracle heißt.

        Cheatah

        1. 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

          1. 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

            1. 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

          2. 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