Philipp Hasenfratz: FULLTEXT-Suche nach abcd$efg

Beitrag lesen

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