Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Dezember

SELFHTML Forumsarchiv
FULLTEXT-Suche nach abcd$efg

Informationsseite
  1. Seite (DATENBANK) FULLTEXT-Suche nach abcd$efg von mic, 30. 12. 2003, 22:32
nach unten

FULLTEXT-Suche nach abcd$efg

Die folgende Nachricht zum Thema stammt von: mic, 30. 12. 2003, 22:32

hi,

ich habe ein mysql-abfrage nach dem muster:

abcd$efgh

SELECT id FROM tabelle WHERE MATCH ( spalte1, spalte2, spalte3 ) AGAINST ( abcd$efg' IN BOOLEAN MODE );

das problem ist, dass sql abcd$efg scheinbar in abcd efgh umwandelt und somit nach abcd ODER efg sucht, was mir gar nicht hilft. gibt man "abcd$efg" erhalt somit nur die datensaätze in denen abcd vorkommt weil egf ja, weil < 4 buchstaben, stopword ist.

weiss jemand ein lösong wie man nach einem string suchen kann der ein sonderzeichen $, § etc. enthält?

danke für die anstrengungen

mic

nach obennach unten

FULLTEXT-Suche nach abcd$efg

Die folgende Nachricht zum Thema stammt von: Ilja, 31. 12. 2003, 06:26

yo,

»» SELECT id FROM tabelle WHERE MATCH ( spalte1, spalte2, spalte3 ) AGAINST ( abcd$efg' IN BOOLEAN MODE );

das fehlende erste ' des strings ist nur ein tippfehler und du benutzt nicht zufällig php, wo das $ als variable erkannt wird ?

Ilja

nach obennach unten

FULLTEXT-Suche nach abcd$efg

Die folgende Nachricht zum Thema stammt von: mic, 31. 12. 2003, 09:38

das fehlende ' war grad nur ein tippfehler hier im forum. der $ hat nichts mmit php zu tun. das ist der befehl den ich direkt so in die db gebe:

SELECT id FROM tabelle WHERE MATCH ( spalte1, spalte2, spalte3 ) AGAINST ( 'abcd$efg' IN BOOLEAN MODE );

außerdem passiert das selbe wenn ic anstatt $ ein § mache...

mic

nach obennach unten

FULLTEXT-Suche nach abcd$efg

Die folgende Nachricht zum Thema stammt von: Ilja, 31. 12. 2003, 10:24

yo,

$ ist meiner ansicht nach kein sonderzeichen bei mysql, um so mehr verwundert mich diese sonderbehandlung des zeichens. bei regulären ausdrücken kennzeichnet das $ das ende eines strings, vielleicht kommt er damit durcheinander, aber alles nur eine vermutung von mir. deshalb versuch einfach mal das sonderzeichen als normales zeichen mit den \ kenntlich zu machen.

'abcd\$efg'

Ilja

nach obennach unten

FULLTEXT-Suche nach abcd$efg

Die folgende Nachricht zum Thema stammt von: mic, 31. 12. 2003, 11:17

»» $ ist meiner ansicht nach kein sonderzeichen bei mysql, um so mehr verwundert mich diese sonderbehandlung des zeichens.

mic hats auch verwundert.

»» deshalb versuch einfach mal das sonderzeichen als normales zeichen mit den \ kenntlich zu machen.
'abcd\$efg'

hab ich schon geht aber leider auch net. ob es ein sonderzeichen ist oder nicht ist eigentlich auch egal. es ist nämlich so, dass mysql alles bei der indizierung als ein wort anerkennt, was

A 4 oder mehr buchstaben
B und durch _ verbunden ist

also wenn abcd§fgh gesucht wird, sucht er nach abcd, §, fgh. und weil nur abcd Bedingung A erfüllt findet er alles mit abcd. und das ist in meinem fall ein wor dass praktisch in jedem datensatz vorkommt. also ist die ganze db nbrauchbar...

ÄRGERLICH!!!!

es müsste eine möglichkeite geben, Bedingung B mit § zu erweitern...

gruß

mic

nach obennach unten

FULLTEXT-Suche nach abcd$efg

Die folgende Nachricht zum Thema stammt von: Ilja, 31. 12. 2003, 15:17

was passiert den, wenn due das den boolen mode weglässt, also

SELECT id FROM tabelle WHERE MATCH ( spalte1, spalte2, spalte3 ) AGAINST ('abcd$efg');

gleiches ergebnis ?

Ilja

nach obennach unten

FULLTEXT-Suche nach abcd$efg

Die folgende Nachricht zum Thema stammt von: mic, 31. 12. 2003, 16:08

»» was passiert den, wenn due das den boolen mode weglässt, also
»»
»» SELECT id FROM tabelle WHERE MATCH ( spalte1, spalte2, spalte3 ) AGAINST ('abcd$efg');
»»
»» gleiches ergebnis ?

jupp, genau die selbe SCH***E und +, -, * etc. gehen net. was natürlich auch net klar gwehen würde...

was nun? man muss doch nach zB gestzen suchen können stpo§24 oder so...

nach obennach unten

FULLTEXT-Suche nach abcd$efg

Die folgende Nachricht zum Thema stammt von: Philipp Hasenfratz, 01. 01. 2004, 02:42

Halihallo mic

»» das problem ist, dass sql abcd$efg scheinbar in abcd efgh umwandelt und somit nach abcd ODER efg sucht, was mir gar nicht hilft. gibt man "abcd$efg" erhalt somit nur die datensaätze in denen abcd vorkommt weil egf ja, weil < 4 buchstaben, stopword ist.

1) Falls du eine Sprache vierter Generation verwendest (PHP,Perl)
   ist die Wahrscheinlichkeit gross, dass abcd$efg in abcd +
   Variableninhalt der Variable $efg aufgelöst wird und somit nicht
   der Zeichenfolge 'abcd$efg' entspricht. Abhilfe schafft Ausgeben
   des Queries.
2) Aus der Dokumentation von http://www.mysql.com/doc/en/Fulltext_Search.html
lässt sich ableiten, dass:

<cite>
MySQL uses a very simple parser to split text into words. A ``word'' is any sequence of characters consisting of letters, digits, `'', and `_'. Any ``word'' that is present in the stopword list or is just too short is ignored. The default minimum length of words that will be found by full-text searches is four characters. This can be changed as described in section 6.8.2 Fine-tuning MySQL Full-text Search.
</cite>

ein "Wort" definiert ist als eine Zeichenfolge aus Buchstaben,
Ziffern, "'" und "_". Nun, ein Fulltext-Search arbeitet auf dieser
Wortebene und somit liesse sich eine Volltextsuche nach dem
_Wort_ "abcd$efg" nicht ohne ändern des Sourcecodes realisieren.
Natürlich könntest du mit field LIKE "%abcd$efg%" arbeiten, wobei
dies vielleicht nicht in deinem Interesse (besonders nicht im
Interesse der Performance) liegt.

»» weiss jemand ein lösong wie man nach einem string suchen kann der ein sonderzeichen $, § etc. enthält?

IMHO ist ein LIKE/RLIKE oder ähnliche
(http://www.mysql.com/doc/en/String_comparison_functions.html)
Funktion die einzige Möglichkeit (wenn auch nicht vorteilhaft bzgl.
Performance).

Viele Grüsse

Philipp

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2003 Teil von Dezember

© 1998-2006 Seite Impressum, Software: Classic Forum