MySQL FULLTEXT index 全文檢索結果 50% 限制說明

edited 十月 2013 in 資料庫
最近在試著使用 KnowledgeBase (詳見 簡單的知識管理 - KnowledgebasePublisher)
在使用檢索功能時居然不能運作. 回官網、討論區挖了半天都找不到解答.
最多也只看到作者再三聲明 "本產品有全文檢索功能.%$#&^%$#....".
而在文章後頭, 只加上了 MySQL FULLTEXT index 相關說明網頁.
===============連結=============
MySQL 4.1 Full-Text Search Functions
MySQL 5.0 Full-Text Search Functions
===============連結=============

在百思不得其解的情況下, 只好順著 MySQL 的相關連結查去.
看著看著, 終於在文章後頭看到了 "解答".
===============節錄=============
For example, although the word 「MySQL」 is present in every row of the articles table shown earlier, a search for the word produces no results:

mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('MySQL');
Empty set (0.00 sec)

The search result is empty because the word 「MySQL」 is present in at least 50% of the rows.
==中略==
Users who need to bypass the 50% limitation can use the boolean search mode
==============節錄完畢============
原來, 因為之前打的一些測試資料都是 123, 2123, 3123 超過了 50%, 所以都沒有顯示結果出來.

現在努力再試看看囉! ├140┤

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=1385

評論

  • edited 三月 2006
    有趣的又來啦! 全文檢索對中文字似乎很難搞(無解乎?).
    現在努力GOOLE 看看有沒有什麼解法.
    ├142┤
  • edited 三月 2006
    基本上沒有試過 MySQL 本身的全文檢索功能,你使用的是 UTF-8 編碼嗎?
  • edited 三月 2006
    kiang 寫道:
    基本上沒有試過 MySQL 本身的全文檢索功能,你使用的是 UTF-8 編碼嗎?
    嗯 DB , 程式 都是使用 UTF-8 編碼.
    目前看到 MySQL FullText Search 對中文是無解.
    因為 MySQL FullText Seharh 是對單字來做索引, 有它判斷"單字"的解析模式.
    英文基本上都是用 空白、逗號、句號 或其它 標點符號做分隔. 而中文就沒有所謂的空白...
    ├140┤

    在大陸有家公司有所謂的 MySQL+CH 完美解決方案, 但要$$..
    目前看到網友提到最可行的方法是把 UTF-8 轉成 HTML 格式來使用
    (儲存到DB、搜尋時把UTF-8轉成HTML進行查詢).

    但...還在嘗試中...有空把程式PO上來大家研究一下.
    (我等會把部份中文語系放上來)
  • edited 三月 2006
    進度回報!

    目前系統查詢功能已修改完畢!
    手動把DB內的中文都改成&#NNNNN後, 使用系統查詢中文都能正常使用.
    ====修改方法============
    \htdocs\knowledgebase\client\KBClientModel.php
    在 342 列下方插入一行程式碼
    $str = htmlentities(mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8'));
    =====================

    接下來會嘗試把寫入功能改成將資料存為HTML MARK(&#NNNNN)的型式.
    目前看到系統都會將SQL Script 做安全檢查, 結果我的 & 符號都被轉掉了
    ├142┤

    看來只好在每筆資料寫入後再重新把資料"轉換"一次.
    有人有更好的提議嗎?
    ├128┤
  • edited 三月 2006
    其實比較建議透過環境設定處理(雖然我也沒試過),因為中文字改成這種形式時並不會比較方便,佔用的資料量也可能大很多。
  • edited 三月 2006
    在你文章中的網頁,好像有人附註了一個解決方式:
    Full text searching in 4.1.1
    For Chinese charset in UTF-8 encoding.
    It needed to set ft_min_word_len =1

    我沒有這樣的環境,你不妨試試 :)
  • edited 三月 2006
    kiang 寫道:
    在你文章中的網頁,好像有人附註了一個解決方式:
    Full text searching in 4.1.1
    For Chinese charset in UTF-8 encoding.
    It needed to set ft_min_word_len =1

    我沒有這樣的環境,你不妨試試 :)
    其實那篇後面也有人回應.......無效
    而我也試了...........無效
    ├142┤

    沒關係, 現在正努力把寫入的問題解決就OK了.
  • edited 四月 2006
    我最近也在苦惱這問題耶~~已經5.18了~~官網毫無新的解決方案
    morris大大你說的那方法後來可以嗎?
  • edited 五月 2006
    jimshsu 寫道:
    我最近也在苦惱這問題耶~~已經5.18了~~官網毫無新的解決方案
    morris大大你說的那方法後來可以嗎?
    目前個人的解法, 最後是妥協不用 MySQL FullText Index.
    作法是在程式中關閉 FullText Index 的功能.
    詳細作法稍後(5/5)補上.
Sign In or Register to comment.