Problem bei Volltextsuche

Hallo!

Ich hab eine Tabelle mit den Spalten "title" und "subtitle" (beide VARCHAR)
und "content" (TEXT).

Hier möchte ich nun zwei Suchen durchführen können:
- Die einfache suche matcht nur auf title+subtitle
- Die erweiterte auf title+subtitle+content

Wie mache ich das? Ich hab bereits alle erdenklichen Kombinationen
ausprobiert (mehrere Indices, Verknüpfung mit OR usw).

Also folgende Indices hab ich bereits probiert:
FULLTEXT(title,subtitle,content)
FULLTEXT(title)+FULLTEXT(subtitle)+FULLTEXT(content)
FULLTEXT(title,subtitle)+FULLTEXT(content)
FULLTEXT(title,subtitle)+FULLTEXT(title,subtitle,content).

Und alle diese Moeglichkeiten hab ich sowohl mit verschiedenen MATCH(...)
als auch Kombinationen daraus (mit OR MATCH) probiert.

Fuer jegliche Hinweise waer ich sehr dankbar.

lg,
Peter
Peter Mairhofer [ Do, 09 August 2007 16:34 ] [ ID #1790362 ]

Re: Problem bei Volltextsuche

Peter Mairhofer!

> Ich hab eine Tabelle mit den Spalten "title" und "subtitle" (beide VARCHAR)
> und "content" (TEXT).
>
> Hier möchte ich nun zwei Suchen durchführen können:
> - Die einfache suche matcht nur auf title+subtitle

ALTER TABLE ... ADD FULLTEXT INDEX (title, subtitle);
SELECT ... FROM ... WHERE MATCH(title, subtitle) AGAINST ("...");

> - Die erweiterte auf title+subtitle+content

ALTER TABLE ... ADD FULLTEXT INDEX (title, subtitle, content);
SELECT ... FROM ... WHERE MATCH(title, subtitle, content ) AGAINST ("...");

Verknüpfung mehrerer einzelner Indizes mit OR oder + (je nachdem, ob in
WHERE oder weiter vorn) geht schon auch, aber...

> Wie mache ich das? Ich hab bereits alle erdenklichen Kombinationen
> ausprobiert (mehrere Indices, Verknüpfung mit OR usw).

Es gibt da noch eine Falle, in die man beim Testen leicht fällt:

Wenn ein Wort in mindestens 50% aller Zeilen vorkommt, dann wird es nicht
bei der Suche berücksichtigt. Volltextsuche in einer Tabelle mit nur zwei
Zeilen, oder wenigen sehr ähnlichen Zeilen, ist daher verhältnismäßig
langweilig.

Du kannst dir da aber behelfen, in dem du, wenn deine Anforderungen das
zulassen, die Suche IN BOOLEAN MODE durchführst:
SELECT ... WHERE MATCH(...) AGAINST("..." IN BOOLEAN MODE);

In diesem Modus gilt diese 50%-Einschränkung nicht.

Weitere Eigenschaften von IN BOOLEAN MODE:
http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html


Gruß
Daniel
Daniel Fischer [ Fr, 10 August 2007 12:19 ] [ ID #1791633 ]

Re: Problem bei Volltextsuche

Daniel Fischer <spam [at] erinye.com> wrote in
news:pan.2007.08.10.10.19.49.947718 [at] df.erinye.com:
> Peter Mairhofer!
>
>> Ich hab eine Tabelle mit den Spalten "title" und "subtitle" (beide
>> VARCHAR) und "content" (TEXT).
>>
>> Hier möchte ich nun zwei Suchen durchführen können:
>> - Die einfache suche matcht nur auf title+subtitle
>
> ALTER TABLE ... ADD FULLTEXT INDEX (title, subtitle);
> SELECT ... FROM ... WHERE MATCH(title, subtitle) AGAINST ("...");
>
>> - Die erweiterte auf title+subtitle+content
>
> ALTER TABLE ... ADD FULLTEXT INDEX (title, subtitle, content);
> SELECT ... FROM ... WHERE MATCH(title, subtitle, content ) AGAINST
> ("...");

Das hatte ich bereits probiert.

phpMyAdmin vermeldet nun stolz:

Warning: More than one FULLTEXT key was created for column `title`

Ist das einfach zu ignorieren? Ich ignoriere ungerne solche Warnings ;-)

> [...]
>
> Es gibt da noch eine Falle, in die man beim Testen leicht fällt:
>
> Wenn ein Wort in mindestens 50% aller Zeilen vorkommt, dann wird es
> nicht bei der Suche berücksichtigt. Volltextsuche in einer Tabelle mit
> nur zwei Zeilen, oder wenigen sehr ähnlichen Zeilen, ist daher
> verhältnismäßig langweilig.
> [...]

Juhuu, genau DAS war offenbar mein Problem! mit "IN BOOLEAN MODE" haut
alles so hin wie ichs mir vorstelle :-)
Danke,

Peter
Peter Mairhofer [ Mo, 13 August 2007 14:20 ] [ ID #1793765 ]

Re: Problem bei Volltextsuche

Peter Mairhofer <63832452 [at] gmx.net> wrote:
>
> phpMyAdmin vermeldet nun stolz:
>
> Warning: More than one FULLTEXT key was created for column `title`
> Ist das einfach zu ignorieren? Ich ignoriere ungerne solche Warnings ;-)

Ja prima. Immer dieses unausgegorene Dreckstool (Tschuldigung).
Kannst du ignorieren. Die Warnung is berechtigt bei Btree-Indexes,
weil dann ein mehrteiliger Index auch immer als Index für alle
Prefixe verwendet werden kann. (Beispiel: ein index (a,b,c) kann
auch als index (a,b) oder index (a) verwendet werden).

Falls dir das am Herzen liegt, reporte einen Bug in phpMyAdmin.
Oben genannte Warnung ist für FULLTEXT Indexe nicht angebracht.
Ich schnitze derweil eine neue Kerbe in das "warum man phpMy-
Admin besser meidet" Holz ;-)


XL
Axel Schwenke [ Mo, 13 August 2007 23:52 ] [ ID #1793769 ]

Re: Problem bei Volltextsuche

Am Mon, 13 Aug 2007 23:52:53 +0200, schrieb Axel Schwenke
<axel.schwenke [at] gmx.de>:

> Ich schnitze derweil eine neue Kerbe in das "warum man phpMy-
> Admin besser meidet" Holz ;-)

Welche Alternativen zu PHPmyadmin und der Kommandozeile gibt es noch?
Bin immer für neues offen.

mfg,
Christian
Christian Aigner [ Do, 16 August 2007 13:31 ] [ ID #1796750 ]

Re: Problem bei Volltextsuche

Christian Aigner schrieb:

> Welche Alternativen zu PHPmyadmin und der Kommandozeile gibt es noch?

http://www.mysql.de/products/tools/

Gruß. Claus
Claus Reibenstein [ Do, 16 August 2007 13:42 ] [ ID #1796751 ]

Re: Problem bei Volltextsuche

Claus Reibenstein schrieb:
> Christian Aigner schrieb:
>
>> Welche Alternativen zu PHPmyadmin und der Kommandozeile gibt es noch?
>
> http://www.mysql.de/products/tools/

*seufz*
Was hat den Wäbbdiesainer schon wieder geritten, daß man den
Downloadlink erst via Google suchen muß? :-(


Tschüs,

Sebastian
Sebastian Suchanek [ Do, 16 August 2007 14:20 ] [ ID #1796752 ]

Re: Problem bei Volltextsuche

Sebastian Suchanek schrieb:

> Claus Reibenstein schrieb:
>
>> Christian Aigner schrieb:
>>
>>> Welche Alternativen zu PHPmyadmin und der Kommandozeile gibt es noch?
>>
>> http://www.mysql.de/products/tools/
>
> *seufz*
> Was hat den Wäbbdiesainer schon wieder geritten, daß man den
> Downloadlink erst via Google suchen muß? :-(

Wieso brauchst Du dazu Google? Einfach auf "Home", dann "Downloads" und
schließlich "GUI-Tools" klicken - und schon bist Du da. Um das zu
finden, braucht man kein Google. Offene Augen und ein bisschen
Denkvermögen tun's auch.

Gruß. Claus
Claus Reibenstein [ Do, 16 August 2007 16:09 ] [ ID #1796753 ]
Datenbanken » de.comp.datenbanken.mysql » Problem bei Volltextsuche

Vorheriges Thema: Frage zu "ON DUPLICATE KEY"
Nächstes Thema: Datentyp String/ordinal