MySQL tam metin belirli bir tablo başarısız

3 Cevap php

Bu ben aşağıdaki kodu var neden başarısız olarak saçımı kocaman oldum

$query = "
SELECT DISTINCT title, caption, message, url, MATCH(title, caption, message, url) AGAINST ('$searchstring' ) AS score FROM news WHERE (valid = 1) AND MATCH(title, caption, message, url) AGAINST ('$searchstring' ) UNION ALL  
SELECT DISTINCT title, caption, message, url, MATCH(title, caption, message, url) AGAINST ('$searchstring' ) AS score FROM paged WHERE (valid = 1) AND MATCH(title, caption, message, url) AGAINST ('$searchstring' )  ORDER BY score DESC";

Ben haber tablosundan belleğine tablosundan değil arama sonuçlarını almak mümkün değilim

3 Cevap

BT AT SON Teşekkür Guys .... BURAYA sorunun nedeni IS VAR

If a word is present in more than 50% of the rows it will have a weight of zero. This has advantages on large datasets, but can make testing difficult on small ones.

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 50% or more of the rows are considered common and do not match. Full-text
searches are natural language searches if the IN NATURAL LANGUAGE MODE
modifier is given or if no modifier is given.

one the one hand the table had only one entry thus the 50% benchmark was overshot even when I duplicated the entry 5 times the 50% benchmark was still an issue and relevance 0, so I added the modifier e.g. SELECT * FROM table WHERE MATCH(col1,col2) AGAINST('search_term' IN BOOLEAN MODE)

Bu stackoverflow ilanıyla ilk kez ..., çok hızlı yanıt almak için beklemiyorduk

Teşekkürler

Stopwords: Benim sorunun ne olduğu tahmin.

Kimden documentation:

Stopword listesi geçerlidir. İlave olarak, satır 50% veya daha fazla mevcut sözcük ortak olarak kabul edilir ve uygun değildir.

paged kriterlere uygun değildi ama news sonra bir ve diğer değil sonuç almak istiyorum olmadıysa.

Hem tablolar MyISAM mı? Veya news InnoDB?

Eğer bilmiyorsanız öğrenmek için bu sorguyu kullanın.

select table_name
     , engine
  from information_schema.tables
 where table_name in('news','paged');

InnoDB türü tablo FULLTEXT desteği yok çünkü.