Volltextsuche - Problem mit Boolesch Operatoren

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Volltextsuche - Problem mit Boolesch Operatoren

Postby insane.eye » 17. April 2005 15:55

Hallo 8)

Ich möchte die Volltextsuche mit Boolesch Operatoren benutzen, aber leider werden diese nicht beachtet.

Die Tabelle:

Code: Select all
mysql> CREATE TABLE artikel (
    ->   id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ->   titel VARCHAR(200),
    ->   artikeltext TEXT,
    ->   FULLTEXT (titel,artikeltext)
    -> );

mysql> INSERT INTO artikel VALUES
    -> (0,'MySQL-Tutorial', 'DBMS steht für DataBase-Management ...'),
    -> (0,'Wie man MySQL effizient einsetzt', 'Nachdem Sie ...'),
    -> (0,'MySQL optimieren','In diesem Tutorial wird gezeigt, wie ...'),
    -> (0,'1001 MySQL-Tricks','1. Lassen Sie mysqld nie als root laufen. 2. Normalisieren ...'),
    -> (0,'MySQL vs. YourSQL', 'Im folgenden Vergleich von Datenbank ...'),
    -> (0,'MySQL-Sicherheitsaspekte', 'Wenn er korrekt konfiguriert ist, ist MySQL ...');


Hier mal ein Beispiel:

Code: Select all
SELECT * FROM artikel WHERE MATCH (titel,artikeltext) AGAINST ('Datenbank +Lassen')


Nun müsste die Spalte zurück gegeben werden, in der 'Datenbank' und 'Lassen' gefunden wird, oder?
Da keine Zeile beide Wörter enthält, darf nichts zurückgegeben werden.
Allerdings werden mir die Zeilen, die nur ein Wort von beiden beinhalten, zurückgegeben.
Habe ich etwas falsch gemacht?

Vielen Dank :wink:
insane.eye
 
Posts: 8
Joined: 16. January 2005 01:19

Postby Wiedmann » 17. April 2005 16:53

Code: Select all
SELECT * FROM artikel WHERE MATCH (titel,artikeltext) AGAINST ('Datenbank +Lassen')

Nun müsste die Spalte zurück gegeben werden, in der 'Datenbank' und 'Lassen' gefunden wird, oder?

Also versucht hätte ich diese Aufgabenstellung so:
Code: Select all
SELECT *
FROM `artikel`
WHERE
    MATCH (`titel`, `artikeltext`)
    AGAINST ('+Datenbank +Lassen' IN BOOLEAN MODE);
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby insane.eye » 17. April 2005 18:08

Achso danke ! :P

Wie ist das nun mit diesen Relevanz Gewichtungen?

Wird mit 'IN BOOLEAN MODE' nicht mehr danach sortiert?

Also ohne 'IN BOOLEAN MODE', wurde die Zeile, die mehr Treffer erzielt hat, zuerst aufgelistet.. ist das in diesem Mode nicht möglich? :D
insane.eye
 
Posts: 8
Joined: 16. January 2005 01:19

Postby Wiedmann » 17. April 2005 18:28

Achso danke !

Bitte :-) Auch wenn ich da nur aus dem Manual vorgelesen habe, da ich das selbst noch nie benutzt habe...

Und da wir schon beim Manual sind (eigentlich kennst du das ja...):
Wie ist das nun mit diesen Relevanz Gewichtungen?

MySQL-Manual wrote:They do not automatically sort rows in order of decreasing relevance.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby insane.eye » 17. April 2005 19:19

Hehe, das hab ich wohl übersehen :mrgreen:

Etwas passendes gefunden:

Code: Select all
select titel,artikeltext,match titel,artikeltext against ('Tutorial gezeigt') as score from artikel where match titel,artikeltext against ('Tutorial -Lassen gezeigt' in boolean mode) order by score desc


mfg eye :wink:
insane.eye
 
Posts: 8
Joined: 16. January 2005 01:19


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 1 guest