Fulltext suche verwenden

Fulltext suche verwenden

am 03.08.2007 10:51:09 von 100.236719

Hallo NG,

in einer Tabelle habe ich nachträglich den Fulltext Index hinzugefühgt:

ALTER TABLE volltext ADD FULLTEXT INDEX (`de`)

Die Spalte heißt wirklich "de", diese Query verlief ok.
Jetzt möchte ich in der Spalte suche per:

SELECT * FROM angebot_volltext WHERE MATCH de AGAINST ('der')

für die Spaltenname habe ich schon mit (de) oder `de` versucht, die
Query kann abgeschickt werden aber es kommt kein Ergebnis?

Gestalte ich die Query:

SELECT * FROM angebot_volltext WHERE MATCH ('de' ) AGAINST ('der')

bekomme ich folgende Meldung:

You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near ''de' )
AGAINST ('d')' at line 1

Klar der Spaltenname ist in 'de'.

Was mache ich mit der Such Query falsch?

Grüße Bernhard

Re: Fulltext suche verwenden

am 03.08.2007 11:03:12 von Christian Kirsch

Am 03.08.2007 10:51 schrieb bernhard.s:
> Hallo NG,
>
> in einer Tabelle habe ich nachträglich den Fulltext Index hinzugefühgt:
>
> ALTER TABLE volltext ADD FULLTEXT INDEX (`de`)
>
> Die Spalte heißt wirklich "de", diese Query verlief ok.
> Jetzt möchte ich in der Spalte suche per:
>
> SELECT * FROM angebot_volltext WHERE MATCH de AGAINST ('der')
>
> für die Spaltenname habe ich schon mit (de) oder `de` versucht, die
> Query kann abgeschickt werden aber es kommt kein Ergebnis?
>

der ist zu kurz. Bitte lies die Dokumentation zu Fulltext search,
Abschnitt "fine tuning", bei dev.mysql.com/doc (am besten auch alles
andere).

--
Christian

Re: Fulltext suche verwenden

am 03.08.2007 11:38:00 von 100.236719

Hallo,

den Abschint "fine tuning" habe ich gelesen und unter anderem das gefunden:

....
Beachten Sie, dass die Volltextsuche standardmäßig bereits für maximale
Effektivität optimiert ist. Eine Modifikation des Standardverhaltens
kann in den meisten Fällen zu einer Verringerung der Effizienz führen.
Ändern Sie den MySQL-Quellcode nur dann, wenn Sie genau wissen, was Sie tun!
....

Quelle:
http://dev.mysql.com/doc/refman/5.1/de/fulltext-fine-tuning. html

Den MySQL Server kann ich nicht ohne weiteres neu starten :-(

Grüße Bernhard


Christian Kirsch schrieb:
> der ist zu kurz. Bitte lies die Dokumentation zu Fulltext search,
> Abschnitt "fine tuning", bei dev.mysql.com/doc (am besten auch alles
> andere).

Re: Fulltext suche verwenden

am 03.08.2007 12:06:08 von 100.236719

Hallo,

habe gerade eine Möglichkeit gefunden, ich würde es betrachten als Ansatz:

SELECT * FROM volltext WHERE MATCH de AGAINST ('der artikel' IN BOOLEAN
MODE)

Es klappt mit zwei Wörter, als Suchparameter aber nicht mit einem?
Übergebe ich nur "der", ist das Ergebnis leer.
Übergebe ich nur "der artikel", werden Treffer angezeigt.

Dieses Verhalten der MySQL kann ich nicht nach vollziehen.

Grüße Bernhard


Christian Kirsch schrieb:
> der ist zu kurz. Bitte lies die Dokumentation zu Fulltext search,
> Abschnitt "fine tuning", bei dev.mysql.com/doc (am besten auch alles
> andere).

Re: Fulltext suche verwenden

am 03.08.2007 12:18:12 von Christian Kirsch

Am 03.08.2007 12:06 schrieb bernhard.s:
> Hallo,
>
> habe gerade eine Möglichkeit gefunden, ich würde es betrachten als Ansatz:
>
> SELECT * FROM volltext WHERE MATCH de AGAINST ('der artikel' IN BOOLEAN
> MODE)
>
> Es klappt mit zwei Wörter, als Suchparameter aber nicht mit einem?
> Übergebe ich nur "der", ist das Ergebnis leer.
> Übergebe ich nur "der artikel", werden Treffer angezeigt.
>
> Dieses Verhalten der MySQL kann ich nicht nach vollziehen.

> Christian Kirsch schrieb:
>> der ist zu kurz.

1. Bitte zitiere vernünftig. Bis auf eine verschwindende Minderheit
stellt sich niemand auf den Kopf, um Postings in der semantisch
richtigen Reihenfolge zu lesen. Also: Erst das Zitat, dann die Antwort
darauf. Alles andere ist Mist.

Zweitens: LIES BITTE die Antworten (und die Dokumentation). Es kann
doch nun nicht so schwierig sein, aus dem Hinweis "der ist zu kurz"
sowie dem Original

"The minimum and maximum lengths of words to be indexed are defined by
the ft_min_word_len and ft_max_word_len system variables. (See Section
5.2.3, "System Variables".) The default minimum value is four
characters; the default maximum is version dependent."

darauf zu kommen, dass "der" eben nur DREI Zeichen hat, die
Volltextsuche in MySQL aber eine Mindestlänge von VIER Zeichen verwendet?

--
Christian

Re: Fulltext suche verwenden

am 03.08.2007 12:30:59 von Axel Schwenke

"bernhard.s" <100.236719@germanynet.de> wrote:
> Hallo,
>
> habe gerade eine Möglichkeit gefunden, ich würde es betrachten als Ansatz:
>
> SELECT * FROM volltext WHERE MATCH de AGAINST ('der artikel' IN BOOLEAN
> MODE)
>
> Es klappt mit zwei Wörter, als Suchparameter aber nicht mit einem?
> Übergebe ich nur "der", ist das Ergebnis leer.
> Übergebe ich nur "der artikel", werden Treffer angezeigt.
>
> Dieses Verhalten der MySQL kann ich nicht nach vollziehen.

Deswegen sollst du ja auch das Handbuch lesen!

"A natural language search interprets the search string as a phrase in
natural human language (a phrase in free text). There are no special
operators. The stopword list applies. In addition, words that are
present in more than 50% of the rows are considered common and do not
match."

und

"Boolean full-text searches have these characteristics:
* They do not use the 50% threshold."


XL