第 1 頁 (共 1 頁)
phpBB3 RC 中文搜尋功能失常(問題已解決)
發表於 : 2007-07-18 23:31
由 uduh
英文搜尋沒問題,
中文搜尋確出現如下的狀況…
搜尋“放大機鏡頭”
代碼: 選擇全部
信息:
您輸入的以下字詞將被忽略:大 放 機 鏡 頭
您必須指定至少一個關鍵詞,且每個關鍵詞必須為 3 到 14 個字元(包含通配符)。
請問已安裝的站長們,是否有同樣的問題?
還是我設定的問題,謝謝!
發表於 : 2007-07-19 04:02
由 傳說中的ET
我也會耶!
怎麼都沒注意到...
可是好像是主機端的問題
我記得我在測試的時候沒這問題
現在在線上的那台測試的確有問題...
我明天試試看是不是我當初測試真的沒問題@@
--------------------------------------------------
我現在有問題的主機軟體版本跟你一樣,因為是CentOS4,所以php、Apache和MySQL的版本都跟你一樣
我測試用的是Fedora6,php是5.1.2,MySQL是5.x.x,Apache是2.2.x
我沒記錯的話,Fedora那台沒問題
明天測試看看@@
發表於 : 2007-07-19 11:43
由 stevenbb
我的也都不行

只要是中文都不行
最新的cvs安裝後也是一樣
不過,官網倒是不會出現相同的訊息
只是出現沒有適合的結果而已
發表於 : 2007-07-19 13:05
由 michaelchain
uduh
我已经回过你的文章, 是后台搜索词频阈值的设置问题.
發表於 : 2007-07-19 22:45
由 傳說中的ET
stevenbb 寫:我的也都不行

只要是中文都不行
最新的cvs安裝後也是一樣
不過,官網倒是不會出現相同的訊息
只是出現沒有適合的結果而已
官網不是用phpBB內建搜尋,是Google
我已经回过你的文章, 是后台搜索词频阈值的设置问题.
是嗎?英文是哪個選項呢?
我今天測試過了,Fedora6那台的確可以,但是到CentOS4就不行
Fedora6: MySQL5.0.27 php5.1.6 apache 2.2.4
CentOS4:MySQL 4.1.20 php4.3.9 Apache 2.0.?
還在研究問題中...
目前找到,相關的應該是PCRE
Support for non-latin UTF-8 characters using PCRE:
This search backend requires PCRE unicode character properties, only available in PHP 4.4, 5.1 and above, if you want to search for non-latin characters.
4.3.9不支援那東西,所以不能搜尋英文以外的
可是在這個情況下,會用mbstring,所以應該還是可以搜尋中文才對...
我回報Bug看看他們怎麼說好了
發表於 : 2007-07-20 00:16
由 stevenbb
傳說中的ET 寫:
官網不是用phpBB內建搜尋,是Google
http://www.phpbb.com/community/search.php
這頁是Google?是你認錯還是真是如此
我可不是用logo圖上面那個放大鏡
我的 php 是 4.4.6
php infomation 中顯示 pcre 是啟動的,也是沒用
更新到最新 4.4.7 還是一樣
發表於 : 2007-07-20 01:15
由 uduh
問題解決了,
詞頻閾值調高後,重建索引就可以正常搜尋中文。
感謝各位及michaelchain兄的指導,造成各位的困擾!

發表於 : 2007-07-21 03:30
由 傳說中的ET
當然是我看錯....抱歉了
詞頻閾值調高後,重建索引就可以正常搜尋中文。
請問那個選項的英文是?我沒裝中文語系檔
可是我一直覺得不是那個問題
就算不是pcre的問題
它出現錯誤訊息的時候,你會發現他在每個中文字間都有空格,所以他認為你打的字沒有超過三個字,不給你搜尋
完完全全一樣的論壇,在我的Fedora6就可以搜尋,CentOS4就不能搜尋...
這不是很奇怪嗎

我去重建索引看看...
發表於 : 2007-07-21 10:57
由 心靈捕手
uduh 寫:問題解決了,
詞頻閾值調高後,重建索引就可以正常搜尋中文。
感謝各位及michaelchain兄的指導,造成各位的困擾!

或許, 關鍵在於是否有執行 '
重建索引'.
我的測試論壇, 維持預設詞頻閾值, 一切正常.
http://wang5555.dnsfor.me/test/phpBB3/index.php
且其說明中有段 '只有當文章數大於100時這個設置才能生效',
只是測試論壇, 哪來這麼多文章啊!

發表於 : 2007-07-21 13:10
由 stevenbb
我不覺得詞頻閥值會造成這樣的錯誤
照他英文的解釋是指某個詞如果在所有文章的x%以上都有出現,那就歸類成普通(常用)詞
那建立index時就不會被加入
進行搜尋後,程式如果有在index找到就會列出結果,不然就是某種錯誤訊息????
傳說中的ET指出一個地方,每個中文字間都有一個空白
我測試站的結果
搜尋設定是預設值、index是空的時如果搜尋 網站分享 出現
代碼: 選擇全部
The following words in your search query were ignored: 網 站 分 享.
You must specify at least one word to search for. Each word must consist of at least 3 characters and must not contain more than 14 characters excluding wildcards.
就是發生樓主所指出的錯誤訊息每個詞都被忽略,而且整個詞被拆開來之間都有空白
如果把 Min characters indexed by search 設為1,index是空的時搜尋
代碼: 選擇全部
No posts were found because the word 網 is not contained in any post.
搜尋條件變成只剩一個字了!!!!!!
以預設值 3 14 5%建立index,搜尋 網站分享 出現
代碼: 選擇全部
The following words in your search query were ignored: 享 分 站 網.
You must specify at least one word to search for. Each word must consist of at least 3 characters and must not contain more than 14 characters excluding wildcards.
真是詭異!!!!
以相同的index,Min characters indexed by search 設為1
代碼: 選擇全部
The following words in your search query were ignored: 享 分 站 網.
You must specify at least one word to search for. Each word must consist of at least 1 characters and must not contain more than 14 characters excluding wildcards.
更是詭異,剛剛沒index還正常
以 1 14 5%重建index,搜尋 網站分享 出現
代碼: 選擇全部
The following words in your search query were ignored: 享 分 站 網.
You must specify at least one word to search for. Each word must consist of at least 1 characters and must not contain more than 14 characters excluding wildcards.
以 1 14 0%重建index,搜尋 網站分享 出現結果了
只有一個是我要的,其他結果裡面只是剛好 網 站 分 享 四個字都有
頓時打擊我想使用 phpbb3 的想法
那官網搜尋回應的訊息
代碼: 選擇全部
No suitable matches were found.
又是怎麼來的
中文沒做 index 就無法搜尋???
105篇文章以 1 14 0%建 index 讓資料庫從 3.03M 爆增到 6.81M
建 index 的條件不良也搜尋不到
每個詞都被拆為單一一個字
這怎麼接受阿
發表於 : 2007-07-23 03:41
由 傳說中的ET
好神奇....
後來,連我Fedora6都有問題了
超奇怪....(原本沒問題啊...還是說我本來就沒測試好?)
還有更奇怪的
後來,我在CentOS4上重建索引,沒用
改成Fulltext mysql,竟然就可以了...
但是很多東西都找不到
後來改回Fulltext native,竟然可以用了...
毫無頭緒

...
更怪的是,每個字之間還是有空格....
完完全全搞不懂
發表於 : 2007-07-23 12:21
由 michaelchain
以前的做法搜索什么語言都沒問題, 但是對資源消耗太大, 才出現今天的 分詞+索引 方式.
這種方式能極大的降低搜索的時間復雜度. 將搜索時產生的時間消耗轉移到匯入資料階段. 因此使用這種方式的搜索模組都會帶一個很大的索引庫(算法不好的話可能比你的資料還大). 也許對一些空間很小但是cpu很快的人有點不方便. 但這是科技的方向..
中文搜索一向是一個難題. 首先中文的分詞就有很多學問, 微軟亞洲研究院還專門成立一個group研究自然語言, 其中研究最多的就是語言的分詞, 因為這對于語音合成/識別非常重要. 但是中文這么高深的東西, 雖然現在有很多理論, 但是最好的成績也就是97~98%, 100%是做不到的, 因為還有不少必須結合語境才能進行分詞的情況.
每個中文搜索引擎都有自己的一套分詞算法, 這是核心技術之一. 在這方面百度一直比google好一點.
話題回到phpbb上來. 因為phpbb并不是特別為中文開發的軟體, 所以并不帶分詞算法, 對于中文來講, phpbb實際上就是將搜索詞分成一串漢字, 每個漢字作為一個單詞存在索引中, 閾值就是避免檢索出現過于頻繁的字. 如果閾值設為30%, 那么如果你的數據庫中所有文章包含了10,000個漢字, 而"的"字出現了3,001次, 重建索引后這個"的"字就會被從檢索條目中刪掉.
再來看看其他論壇軟體的搜索做法.
DZ我比較清楚, 版本5.5也還在用那種老土的%xx%方式來搜索, 只不過在上面優化再優化, 盡量避免各種可能避免的搜索動作, 或者進行時間限制等等. 如果你同時用1000個機器人, 每個機器人抱一本辭海亂序去搜, 論壇一定會翹翹.
vbb一直讓中文用戶不滿意的地方也是搜索. 以至于有人專門為vbb開發了一個中文搜索插件. 這我沒有仔細研究過, 如果里面已經有做初步的中文分詞, 那么我們可以借鑒過來用在phpbb上.
其他的論壇沒有接觸過, 沒有發言權.
如果大家有興趣, 可以去研究一下搜索算法, 分詞算法, 這些資料文檔在google上可以找到很多. 如果有PHP方面的中文分詞開源軟體, 也不妨推薦一下, 說不定就能做成一個中文搜索的MOD
發表於 : 2007-08-09 21:25
由 蝦米尚青
我將詞頻閾值調成30%之後重建索引
目前中文搜尋正常
發表於 : 2007-09-23 17:16
由 傳說中的ET
michaelchain 寫:
話題回到phpbb上來. 因為phpbb并不是特別為中文開發的軟體, 所以并不帶分詞算法, 對于中文來講, phpbb實際上就是將搜索詞分成一串漢字, 每個漢字作為一個單詞存在索引中, 閾值就是避免檢索出現過于頻繁的字. 如果閾值設為30%, 那么如果你的數據庫中所有文章包含了10,000個漢字, 而"的"字出現了3,001次, 重建索引后這個"的"字就會被從檢索條目中刪掉.
所以說,phpBB本來就把每個漢字都當成一個詞在搜尋囉?原來如此...
這解釋了很多,感謝分享!
發表於 : 2007-10-12 22:35
由 michaelchain
參考vbb3中文版的二分法分詞原理, 已經將phpBB3的中文分詞改進...
現在不會再出現那么多 X X X 被忽略的情況了.
可以到我的論壇去搜索試試效果.
基于詞庫的分詞也已經成功(借鑒了dedecms的分詞程式, 但是從gbk轉換至utf8花了我不少工夫). 相比較二分法, 這個分詞法能產生更加貼切和精簡的分詞結果, 極大的減小了索引表的大小, 但是這種分詞法太耗時間, 經過測試, 原phpbb3提供的分詞下, 某文章發表需時0.6s, 二分法則需時0.9s, 如果用詞庫分詞, 需時接近3s.
現在知道為什么Discuz為什么發帖那么快了... 它根本就不建索引, 在Discuz6里面還是用的like '%xxx%' 的形式來搜索, orz