2014-02-20 37 views
1

所以我有這個看似簡單的查詢:MATOL IN BOOLEAN MODE與現有記錄不符?

SELECT i.*, 
    g.title AS groupname, 
    c.name AS category, 
    v.name AS author, 
    w.name as moderator, 
    u.name AS editor 
FROM `jos_k2_items` as i 
    LEFT JOIN `jos_k2_categories` AS c ON c.id = i.catid 
    LEFT JOIN `jos_viewlevels` AS g ON g.id = i.access 
    LEFT JOIN `jos_users` AS u ON u.id = i.checked_out 
    LEFT JOIN `jos_users` AS v ON v.id = i.created_by 
    LEFT JOIN `jos_users` AS w ON w.id = i.modified_by 
WHERE i.trash=0 
    AND MATCH(i.title) AGAINST ('+red* +2*' IN BOOLEAN MODE) 
ORDER BY i.id DESC 

在管理員界面的Joomla搜索建。我試圖找到一篇名爲RED 2的文章,但它沒有返回任何結果。下面是該行的一個片段:

id title alias catid published ... trash 
=============================================== 
800 RED 2 red-2 5  1    0 

有桌子上全文索引。第一個是title列,第二個是title, introtext, fulltext, extra_fields_search, image_caption, image_credits, video_caption, video_credits, metadesc, metakey

一個我想的事情是重建索引,我用下面的命令:

REPAIR TABLE `jos_k2_items` QUICK; 
+1

你的搜索詞是小的,默認情況下,最小值爲3('的ft_min_word_len = 3') – 2014-02-20 02:17:10

+0

@ Dagon,好吧,你絕對正確。有沒有辦法來重寫呢?這些是客戶需要查找的合法文章,而且他們有成千上萬的文章,因此逐頁瀏覽不是真正的選擇。 –

+0

是的,您可以更改'ft_min_word_len'的值 - 假設您已經控制了mysql服務器。重新啓動,需要重建索引 – 2014-02-20 02:21:49

回答

3

您試圖匹配的話比3

第一的默認最小全文索引長度短改變限制

ft_min_word_len = 3 

至2或1

然後重新啓動MySQL和重建表上的索引:

你可以做到這一點:

REPAIR TABLE my_table QUICK;