Vinzenz Mai: MySQL: MATCH AGAINST matcht nicht

Beitrag lesen

Hallo,

Ich denke es liegt daran, dass in folgendem (stark vereinfachtem) Query scoring immer 0 ist.

ein vereinfachtes Query taugt nichts, es sei denn das ist ein korrektes Resultat aufgrund der vorhandenen Daten.

SELECT topic, keywords, teaser, content, MATCH ( topic, keywords, teaser, content ) AGAINST ('test') AS scoring FROM jlog_content;


> +-------------+----------+--------------+-------------+---------+  
> | topic       | keywords | teaser       | content     | scoring |  
> +-------------+----------+--------------+-------------+---------+  
> | erster test |          | nur ein test | erster test | 0       |  
> +-------------+----------+--------------+-------------+---------+  
>   
> Warum scoring 0 ist kann ich aber absolut nicht nachvollziehen. Kann mir das irgendwer erklären?  
  
Die Wichtung von test könnte einfach 0 sein, siehe in von Dir verlinktem Handbuchabschnitt:  
  
<zitat>  
    Every correct word in the collection and in the query is weighted  
    according to its significance in the collection or query. Consequently,  
    a word that is present in many documents has a lower weight (and may even  
    have a zero weight), because it has lower semantic value in this  
    particular collection. Conversely, if the word is rare, it receives a  
    higher weight. The weights of the words are combined to compute the  
    relevance of the row.  
</zitat>  
  

> Komisch ist auch, dass das erste Beispiel aus dem mySql-Manual (<http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html>) klappt. (lokal getestet)  
>   
> Kann es vielleicht sein, dass was mit dem FULLTEXT bei der Tabelle nicht stimmt? Aber dann müsste ich ja eigentlich eine Fehlermeldung bekommen, oder?  
  
Nein, wieso?  
  

> Die Tabelle wird mit folgendem Query (von einen PHP-Script) erstellt:  
> ~~~sql
  

>     CREATE TABLE `jlog_content` (  
>       id int(11) auto_increment,  
>       url varchar(200),  
>       topic varchar(255),  
>       date datetime,  
>       teaser mediumtext,  
>       teaserpic varchar(10),  
>       teaserpiconblog tinyint(1),  
>       keywords varchar(255),  
>       content longtext,  
>       comments tinyint(1) default '1',  
>       allowpingback tinyint(1) default '1',  
>       section varchar(10) default 'weblog',  
>       UNIQUE KEY id (id),  
>       FULLTEXT KEY content_index (content, topic, teaser, keywords)  
>     ) TYPE=MyISAM;  
> 

Fehlen noch irgendwelche Informationen?

Ja, die Daten in Deiner Tabelle, mit denen Du Deinen Versuch gemacht hast.

Freundliche Grüße

Vinzenz