2012-12-10 59 views
0

我已經規範化我的數據庫我現在在myiasm表上使用全文搜索。mysql全文搜索部分匹配和報價

我有幾個搜索場景

  1. 搜索 「你好」「你好朋友

  2. 搜索 「地獄」 IN 「這位朋友你好,歡迎來到地獄」

  3. 搜索「星期五「結束」在'來玩星期五'結束'

我需要最好的m ATCH和目前使用

SELECT cu.ID as UID ,MATCH cu.content AGAINST ('hell') as relevance 
FROM cht_user cu 
JOIN cht_agent_script cas ON (cas.UID = cu.ID AND cas.AID = '315') 
WHERE MATCH cu.content AGAINST ('hell') 
ORDER BY relevance DESC 

問題是

  1. 數3不會給結果

  2. 數2不會得到結果

  3. 編號1是唯一的一個,將工作

回答

0

首先,正如他們在此post中所解釋的那樣,向表中添加更多數據。

其次,檢查出的FULLTEXT停用詞:http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html

的Mysql忽略的單詞列表,你可以看到他們該鏈接。全文搜索會忽略「hello」。

因此,請嘗試向表中添加更多記錄。然後重做你的全文索引:

OPTIMIZE TABLE cht_user; 

如果您仍然遇到問題讓我知道

希望這有助於你

+0

問候只是爲exmple,我可以使用用戶提供的比賽在某種程度上取代? LIKE正在做MATCH REPLACE(cu.content,'「,」_「),它不適用於我 –

+0

從我讀過的內容來看,MySql會忽略這些符號如果你想搜索一個特定的短語,你可以使用AGAINST (''這是愚蠢的''),但我不確定是否可以轉義雙引號字符。這主要是爲了搜索單詞或短語,如果你想用'LIKE'%fri「結束% ''而不是 – juanreyesv

+0

以及我的問題是,在希伯來語有一個詞的中間引號,這意味着什麼... 我可以替換嗎? (REPLACE(cu.content,'「,」_「))它似乎不起作用 –