2012-11-26 27 views
0

我們有以下查詢:Mysql的對陣查詢沒有返回確切resutls

SELECT video . * , u.name, u.username, p.avatar 
FROM jos_hwdvidsvideos AS video 
WHERE video.public_private = 'public' 
AND MATCH (
    title, tags, description 
) 
AGAINST (
    'matthew:13-44-46' 
) 
AND video.published =1 
AND video.approved = "yes" 
LIMIT 0 , 30 

唯一的問題是,它會返回結果,其中標題,標籤或說明相匹配matthew:13-44-46但它返回任何有其中有matthew

回答

1

由於Fine-Tuning MySQL Full-Text Search下記載:

如果你想改變的一組被認爲是單詞字符的字符,你可以用幾種方式做到這一點,在下面的列表說明。進行修改後,您必須爲包含任何FULLTEXT索引的每個表重建索引。假設你想把連字符('-')當作單詞字符。使用以下方法之一:

  • 修改MySQL的源:在storage/myisam/ftdefs.h,看到true_word_char()misc_word_char()宏。將'-'添加到這些宏之一併重新編譯MySQL。

  • 修改字符集文件:這不需要重新編譯。 true_word_char()宏使用「字符類型」表來區分字母和數字與其他字符。 。您可以在其中一個字符集XML文件中編輯<ctype><map>數組的內容,以指定'-'是「字母」。然後使用給定的字符集作爲FULLTEXT索引。有關<ctype><map>陣列格式的信息,請參閱Section 10.3.1, 「Character Definition Arrays」

  • 爲索引列使用的字符集添加新的歸類,並更改列以使用該歸類。有關添加排序規則的一般信息,請參見Section 10.4, 「Adding a Collation to a Character Set」。有關全文索引的示例,請參閱Section 12.9.7, 「Adding a Collation for Full-Text Indexing」

或者,您也可以執行精確的短語SEACH IN BOOLEAN MODE

MATCH (title, tags, description) AGAINST ('"matthew:13-44-46"' IN BOOLEAN MODE) 
+0

謝謝......我累了IN BOOLEAN MODE和它的工作! – fishnet786