您在這裡

search,cron 搜尋索引的建立在文章量過十萬字等級時非常脆弱

shiyee's 的頭像
shiyee 在 2006-05-24 (三) 19:48 發表

drupal 無法很好的處理過萬字的文章檢索工作
或許要拆分為一篇幾千個字的文章會不會比較好呢??

我把一整本書輸入,結果在建立索引時,執行時間超時、搜索關鍵字也不正常
蠻糟糕的

試了一下這個分詞模組

1. 字典檔案編碼是UTF-16 結果不正確,把檔案轉成UTF-8 後可用

2. 搜尋結果預覽擷取段落不正確(有些正確,似乎不是這個中文分詞模組造成的)

3. 有些存在於字典的辭彙,仍然無法搜尋

感覺上不好用,問題很多,換回用預設簡單分詞,至少每兩個字(最小單位從預設三個字改設成兩個字)都可以被檢索

上萬字以上的文章,限制到哪裡還需要測試
至少三十萬字左右的書是有問題的(完全無法檢索)

試了21400 中文字,正常,但cron 很吃力

這是可預期的
用php來index本來就會有效率上的問題
加上search.module用很簡單的演算法來做
本來就不適合一次大量的索引

我所想到的應變方式有幾個
第一,如果你只是要輸入一次,不是每次都上萬字
那就單獨寫個module,借search.module裡頭的function去跑完一遍

第二,php的可執行時間限制得拉長,測測看,可能要10min。雖然這樣不安全,但是暫時的解套方式。

第三,尋找,或自己寫個比較好的索引建立演算法。

第四,把搜尋拿掉,用外部服務來幫助你,維護搜尋服務事實上是很耗資源的,如果站上文章大量的更新,就得有大量的資源來供給他。

--
from open mind to open source~

還可以將篇數增加分割,利用手冊頁面來分章節,一篇兩千個字,一本書三十萬字150個node
搜尋時,搜尋模組一次搜尋數量降低為50或更低 ,分三次跑cron

之前只是測試一下字數很多的文章會不會有問題
我想控制一下每個node 字數,Drupal 建立索引應該不會那麼吃緊
只是查詢mysql時,大量文庫能否撐得住??

為什麼要建立索引,就是為了要讓mysql撐得住
索引算的是你站上的總詞彙數量
我管得站12000篇文章,每篇至少200字
200*12000,就是很可怕的數字了
目前搜尋的效率還算可接受

--
from open mind to open source~