Frage bezüglich Fulltext-suche

Frage bezüglich Fulltext-suche

am 09.12.2005 11:52:51 von devrim

Hallo NG,

ich suche nach dem Wort "NEU-ULM" mittels Filltextsuche.

Da aber "-" zeichen ein Parameter von Fulltextsuche-funktion ist, habe ich
problem nach der Suche das Wort "NEU-ULM"

Wenn ich nach "neu-ulm" suche erhalte ich folgende query:

SELECT * FROM rehber WHERE MATCH
(firma,ilgili_kisi,adres,plz,ort,telefon,telefax,mobil,inter net,email,branschen,keywords)
AGAINST (' +neu-ulm' IN BOOLEAN MODE)

Wie muss ich Suchabfrage umändern, dass wenn ich nach "neu-ulm" suche
tatsächlich alle Ergebnisse mit "neu-ulm" ausgegeben wird?

mfg
Devrim

Re: Frage bezüglich Fulltext-suche

am 09.12.2005 12:06:26 von Andreas Lange

Am 09.12.2005, 11:52 Uhr, schrieb Devrim :
> ich suche nach dem Wort "NEU-ULM" mittels Filltextsuche.
>
> Da aber "-" zeichen ein Parameter von Fulltextsuche-funktion ist, habe
> ich
> problem nach der Suche das Wort "NEU-ULM"
>
> Wenn ich nach "neu-ulm" suche erhalte ich folgende query:
>
> SELECT * FROM rehber WHERE MATCH
> (firma,ilgili_kisi,adres,plz,ort,telefon,telefax,mobil,inter net,email,branschen,keywords)
> AGAINST (' +neu-ulm' IN BOOLEAN MODE)
>
> Wie muss ich Suchabfrage umändern, dass wenn ich nach "neu-ulm" suche
> tatsächlich alle Ergebnisse mit "neu-ulm" ausgegeben wird?

http://dev.mysql.com/doc/refman/4.1/en/fulltext-boolean.html

Der Suchstring sollte +"neu-ulm" sein.

--
Andreas Lange

Re: Frage bezüglich Fulltext-suche

am 09.12.2005 15:08:21 von devrim

"Andreas Lange" schrieb im Newsbeitrag
news:op.s1ijs0k48unesf@codeduck.home...
> Am 09.12.2005, 11:52 Uhr, schrieb Devrim :
>> ich suche nach dem Wort "NEU-ULM" mittels Filltextsuche.
>>
>> Da aber "-" zeichen ein Parameter von Fulltextsuche-funktion ist, habe
>> ich
>> problem nach der Suche das Wort "NEU-ULM"
>>
>> Wenn ich nach "neu-ulm" suche erhalte ich folgende query:
>>
>> SELECT * FROM rehber WHERE MATCH
>> (firma,ilgili_kisi,adres,plz,ort,telefon,telefax,mobil,inter net,email,branschen,keywords)
>> AGAINST (' +neu-ulm' IN BOOLEAN MODE)
>>
>> Wie muss ich Suchabfrage umändern, dass wenn ich nach "neu-ulm" suche
>> tatsächlich alle Ergebnisse mit "neu-ulm" ausgegeben wird?
>
> http://dev.mysql.com/doc/refman/4.1/en/fulltext-boolean.html
>
> Der Suchstring sollte +"neu-ulm" sein.
>
> --
> Andreas Lange

Hallo Andreas,
ich habe die Query entsprechend umgeändert.

SELECT * FROM rehber WHERE MATCH
(firma,ilgili_kisi,adres,plz,ort,telefon,telefax,mobil,inter net,email,branschen,keywords)
AGAINST (' +"neu-ulm" ' IN BOOLEAN MODE)

es bringt aber trotzdem keine Ergenisse!

Re: Frage bezüglich Fulltext-suche

am 09.12.2005 17:43:18 von Andreas Lange

Am 09.12.2005, 15:08 Uhr, schrieb Devrim :

> SELECT * FROM rehber WHERE MATCH
>
> (firma,ilgili_kisi,adres,plz,ort,telefon,telefax,mobil,inter net,email,branschen,keywords)
>
> AGAINST (' +"neu-ulm" ' IN BOOLEAN MODE)

Also bei mir funktioniert das.

Bei der MATCH AGAINST Suche gilt allerdings zu beachten, das bestimmte
Kombinationen ein
leeres Ergebnis liefern können. z.B. Wenn die "Matchenden" Datensätze mehr
als 50% der
Datensätze trift etc. pp. eventuell musst Du im MySQL Manual nochmal
nachlesen, ob eine
dieser Sonderbedingungen zutrifft.

Zusätzlich ist natürlich eingesetzt MySQL Version wichtig und ob die
Felder entsprechend
indiziert sind.

Folgendes zum selbst überprüfen/testen (PHP4.x + MySQL 4.x)

--
-- DUMP BEGIN
--

CREATE TABLE `test` (
`Search` text NOT NULL,
FULLTEXT KEY `Search` (`Search`)
) TYPE=MyISAM;

INSERT INTO `test` (`Search`) VALUES ('neu-ulm');
INSERT INTO `test` (`Search`) VALUES ('wir waren in Neu-Ulm');
INSERT INTO `test` (`Search`) VALUES ('Hallo Hannover!');
INSERT INTO `test` (`Search`) VALUES ('Berlin ist die Hauptstadt');
INSERT INTO `test` (`Search`) VALUES ('Bonn ist echt hässlich');
INSERT INTO `test` (`Search`) VALUES ('Blindtext bleibt Blindtext');

--
-- DUMP END
--

SELECT * FROM test WHERE MATCH (Search) AGAINST (' +"neu-ulm" ' IN BOOLEAN
MODE)

--
Andreas Lange

Re: Frage bezüglich Fulltext-suche

am 13.12.2005 22:33:23 von Hakan Kuecuekyilmaz

Devrim wrote:
> Hallo NG,
>
> ich suche nach dem Wort "NEU-ULM" mittels Filltextsuche.
>
> Da aber "-" zeichen ein Parameter von Fulltextsuche-funktion ist, habe ich
> problem nach der Suche das Wort "NEU-ULM"
>
> Wenn ich nach "neu-ulm" suche erhalte ich folgende query:
>
> SELECT * FROM rehber WHERE MATCH
> (firma,ilgili_kisi,adres,plz,ort,telefon,telefax,mobil,inter net,email,branschen,keywords)
> AGAINST (' +neu-ulm' IN BOOLEAN MODE)
>
> Wie muss ich Suchabfrage umändern, dass wenn ich nach "neu-ulm" suche
> tatsächlich alle Ergebnisse mit "neu-ulm" ausgegeben wird?

Brauchst du unbedingt die Fulltextsuche? Vielleicht hilft dir ja auch
schon eine gezielte Suche in "ort":

SELECT * FROM rehber
WHERE ort LIKE '%neu-ulm%'


Grüße, Hakan
--
Hakan Kuecuekyilmaz

Re: Frage bezüglich Fulltext-suche

am 19.12.2005 09:51:09 von Georg Richter

Hakan Kuecuekyilmaz wrote:

> Brauchst du unbedingt die Fulltextsuche? Vielleicht hilft dir ja auch
> schon eine gezielte Suche in "ort":
>
> SELECT * FROM rehber
> WHERE ort LIKE '%neu-ulm%'
>

Wenn man Wert auf Performance legt, verwendet man (Fulltext-) Indizes.

/Georg