WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 23.04.2005, 16:20   #1
heli2sky
Master
 
Registriert seit: 02.10.2001
Alter: 39
Beiträge: 523


heli2sky eine Nachricht über ICQ schicken
Standard php-volltextsuche

hallo!

bis jetzt habe ich auf meiner seite folgende suche gehabt:

PHP-Code:
    $query1 "SELECT * FROM begriffe WHERE MATCH(begriff) AGAINST('$suche*' IN BOOLEAN MODE);";
    
$query2 "SELECT * FROM begriffe WHERE MATCH(text) AGAINST('$suche*' IN BOOLEAN MODE);";
    
$query3 "SELECT * FROM comments WHERE MATCH(comment) AGAINST('$suche*' IN BOOLEAN MODE);"
diese lösung ist, naja, sagen wir mal unfein, nur hab ich die aus zeitgründen bis jetzt nicht verbessern können und sie funktioniert ja auch einigermaßen:
zuerst werden alle ergebnisse von query1 ausgegeben (übereinstimmungen in der begriffs-überschrift), dann welche aus der beschreibung (query2) und dann welche aus den dazu geposteten kommentaren (query3).


probleme dabei:

. es werden nur wörter mit mindestens 4 buchstaben gesucht. das ist sehr schlecht, da sehr viele abkürzungen vorkomen, die zum teil sogar nur aus 2 buchstaben bestehen und dann nicht gefunden werden
. mit "akku" findet man "akkumulator" aber nicht "bleiakku" (wegen '$suche*' ist das so... und '*$suche' funktioniert nicht (wieso?)
(. ergebnisse sind durcheinander (bis auf die oben genannte reihung))

wie stelle ich es am besten an, eine gute suchfunktion hin zu bekommen? die oben angeführte reihung will ich eigentlich nicht ändern (zuerst übereinstimmungen in der überschrift, dann im text, dann in den comments), aber $wort* als übereinstimmung ist mir zu ungenau. es sollte eher in richtung *$wort* laufen, verständlich?

danke schon im voraus.
____________________________________
Lang ist der Weg durch Lehren, kurz und wirksam durch Beispiele.
Lucius Annaeus Seneca


...:::www.modellbaulexikon.org:::...

www.acrobat-se.org | www.ams-8c.de.vu
heli2sky ist offline   Mit Zitat antworten
Alt 23.04.2005, 19:54   #2
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Ich kenn mich bei der mysql-volltextsuche auch ned wirklich aus, aber bei Stringüberprüfungen macht man normalerweise

where irgendwas like '%suchtext%'

Könnt mir also gut Vorstellen, dass es mit AGAINST('%$suche%') geht.

Steht dazu nix im Manual?

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 23.04.2005, 20:19   #3
flocky
Inventar
 
Registriert seit: 16.02.2002
Alter: 39
Beiträge: 3.880


flocky eine Nachricht über ICQ schicken
Standard

wie bistn auf den umständlichen schaß da oben gekommen?

ich use einfach:
SELECT * FROM table WHERE name LIKE '%$searchstring%'
somit kriegst auch ergebnisse die den gesuchten string zur zum teil enthalten, wennsts genau haben willst brauchst:

SELECT * FROM table WHERE name='$searchstring'
flocky ist offline   Mit Zitat antworten
Alt 24.04.2005, 11:12   #4
Alex1
Alter Sack
 
Benutzerbild von Alex1
 
Registriert seit: 19.09.1999
Ort: An der schönen alten Donau
Alter: 53
Beiträge: 1.579

Mein Computer

Standard

Zitat:
Original geschrieben von flocky
wie bistn auf den umständlichen schaß da oben gekommen?
Indem er die mysql Volltextsuche benutzt, und du nicht.
____________________________________
Viele Grüße

Alex

(SUV-Fahrer aus Leidenschaft)
Alex1 ist offline   Mit Zitat antworten
Alt 24.04.2005, 16:05   #5
flocky
Inventar
 
Registriert seit: 16.02.2002
Alter: 39
Beiträge: 3.880


flocky eine Nachricht über ICQ schicken
Standard

ich verstehe nicht inwiefern sich meine lösung von einer volltextsuche unterscheidet, ich find ja genau so alles
flocky ist offline   Mit Zitat antworten
Alt 24.04.2005, 16:49   #6
snowman
Inventar
 
Registriert seit: 26.09.1999
Beiträge: 2.569


Standard

zB Gewichtung nach Relevanz.

gruss,
snowman
____________________________________
MediaMarkt? Ich bin doch nicht blöd, Mann!

Vorsprung durch Technik

Lesen Sie keine Anleitungen, FAQs, Readme - Files. Reine Zeitverschwendung. In den Newsgroups und Foren gibt es genug kompetente Leute, die mit großer Geduld immer wieder dieselben einfachen Fragen beantworten. Völlig kostenlos noch dazu!
snowman ist offline   Mit Zitat antworten
Alt 24.04.2005, 16:59   #7
flocky
Inventar
 
Registriert seit: 16.02.2002
Alter: 39
Beiträge: 3.880


flocky eine Nachricht über ICQ schicken
Standard

darauf lässt sich ja aufgrund der returnten ergebnisse ja immer noch schließen
flocky ist offline   Mit Zitat antworten
Alt 24.04.2005, 20:13   #8
snowman
Inventar
 
Registriert seit: 26.09.1999
Beiträge: 2.569


Standard

wäre aber zusätzlicher aufwand; fulltext indexing ist auch dabei und entlastet natürlich die datenbank.

gruss,
snowman
____________________________________
MediaMarkt? Ich bin doch nicht blöd, Mann!

Vorsprung durch Technik

Lesen Sie keine Anleitungen, FAQs, Readme - Files. Reine Zeitverschwendung. In den Newsgroups und Foren gibt es genug kompetente Leute, die mit großer Geduld immer wieder dieselben einfachen Fragen beantworten. Völlig kostenlos noch dazu!
snowman ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:30 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag