• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

richtig suchen, richtige auswertung

F

FoXMorayn

Guest
Hallo,

ich habe eine suche, ähnlich wie 'google instant', und durchsuche gleichzeitig einige spalten verschiedener tabellen.

Code:
SELECT *                         FROM                              `partner`                         WHERE                         `name` LIKE '%abc%' OR  `firma` LIKE '%abc%' OR `email` LIKE '%abc%' OR `notiz` LIKE  '%abc%';

SELECT *                         FROM                              `partner2`                         WHERE                         `name2` LIKE '%abc%'

[...]
für jedes suchwort, wiederhohle ich die LIKE vergleiche. bis jetzt geht das sehr gut, da es eine sofortige suche per ajax ist, bin ich natürlich an jeder perfomanz steigerung interessiert. geht das schneller?

bietet mysql eine möglichkeit an mir bei jeder zeile mitzuteilen, in welcher spalte etwas gefunden wurde, oder muss ich das nachträglich prüfen?

Gruß,
FoXMorayn
 
Du könntest dir mal FULLTEXT-Indizes ansehen.

- MySQL :: MySQL 5.1 Reference Manual :: 11.9 Full-Text Search Functions

Abfragen über mehrere Tabellen könntest du mit UNION verbinden, statt * solltest du die genauen Felder angeben, die du zurückbekommen möchtest.

bietet mysql eine möglichkeit an mir bei jeder zeile mitzuteilen, in welcher spalte etwas gefunden wurde, oder muss ich das nachträglich prüfen?

Basteln ließe sich da sicherlich was. Geht vermutlich schlauer, aber hier ein Ansatz, der funktionieren könnte:

Code:
SELECT
    IF(`name` LIKE '%abc%', '1', '0') AS is_in_colum_name
    ....
WHERE
    `name` LIKE '%abc%'
    ...
 
versuch mich grad an der volltext suche von mysql.

ist es richtig, dass die kardinalität auf 1 steht? sollte hier nicht die anzahl der einträge angezeigt werden?
wie darf ich das verstehen, ist firma der index und die anderen "unter" indizes?

ich bin mir nicht sicher, ob ich das richtig angelegt habe. anbei ein bild vom phpadmin.
 

Anhänge

  • mysql_vi.JPG
    mysql_vi.JPG
    41 KB · Aufrufe: 6
ist aufjedenfall irgendwie falsch...

"#1191 - Can't find FULLTEXT index matching the column list"

bin damit nicht der einzige, finde aufenweise posts mit diesem fehler, aber keine einheitliche lösung.
weiß jemand, wie man es richtig macht?

EDIT:
wie hab ich das zu verstehen?
"Die Volltextsuche lohnt sich erst bei einer hohen Datendichte. Bei ein, zwei Webseiten in der Datenbank wird die Volltextsuche kaum relevante Ergebnisse liefern, denn MySQL prüft ob der Suchbegriff in mindestens 50 Prozent der Datensätze vorhanden ist und erklärt diesen dann als unrelevant für die Abfrage. Macht ja auch Sinn, wenn man bedenkt, dass das Wort Auto auf einer Automobilhersteller-Webpräsenz ziemlich unnütz für eine Suchanfrage erscheint." ( http://webcache.googleusercontent.c...ten&cd=1&hl=de&ct=clnk&gl=de&client=firefox-a )

liefert mit mysql unter umständen kein ergebnis, weil das suchwort nciht oft genug in den datensätzen vorhanden ist?
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben