phpBB3 RC 中文搜尋功能失常(問題已解決)

phpBB Installation & Usage Support
phpBB 3 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 3.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
uduh
星球普通子民
星球普通子民
文章: 7
註冊時間: 2003-05-23 15:43
來自: 阿度的暗房
聯繫:

phpBB3 RC 中文搜尋功能失常(問題已解決)

文章 uduh »

英文搜尋沒問題,
中文搜尋確出現如下的狀況…

搜尋“放大機鏡頭”

代碼: 選擇全部

信息:

您輸入的以下字詞將被忽略:大 放 機 鏡 頭
您必須指定至少一個關鍵詞,且每個關鍵詞必須為 3 到 14 個字元(包含通配符)。
請問已安裝的站長們,是否有同樣的問題?
還是我設定的問題,謝謝!
最後由 uduh 於 2007-07-20 01:16 編輯,總共編輯了 1 次。
●上網方式:SeedNet ADSL
●架設主機作業系統:Linux 9.0
●架設主機空間:租賃國外空間
●您安裝的程式:Apache 2.0 Handler、PHP 4.3.9、MySQL 4.1.20
●phpBB3 版本:3.0.RC7
●論壇網址:http://www.greyfantasy.org/
傳說中的ET
星球公民
星球公民
文章: 61
註冊時間: 2003-09-28 14:04
來自: 宇宙
聯繫:

文章 傳說中的ET »

我也會耶!
怎麼都沒注意到...

可是好像是主機端的問題
我記得我在測試的時候沒這問題
現在在線上的那台測試的確有問題...
我明天試試看是不是我當初測試真的沒問題@@
--------------------------------------------------
我現在有問題的主機軟體版本跟你一樣,因為是CentOS4,所以php、Apache和MySQL的版本都跟你一樣
我測試用的是Fedora6,php是5.1.2,MySQL是5.x.x,Apache是2.2.x
我沒記錯的話,Fedora那台沒問題
明天測試看看@@
傳說中的ET=傳說中的傳說
stevenbb
星球公民
星球公民
文章: 43
註冊時間: 2001-12-12 00:06
來自: 黑洞

文章 stevenbb »

我的也都不行
:-o 只要是中文都不行
最新的cvs安裝後也是一樣
不過,官網倒是不會出現相同的訊息
只是出現沒有適合的結果而已
michaelchain
星球公民
星球公民
文章: 129
註冊時間: 2006-10-17 03:13

文章 michaelchain »

uduh
我已经回过你的文章, 是后台搜索词频阈值的设置问题.
※伺服器主機:Intel Core2 酷睿™2 E6300, 升級到4GB RAM了
※主機作業系統:CentOS 4 Linux
※我的 phpBB 版本:phpBB3.0.?
※我的網址: 中文PHPBB
傳說中的ET
星球公民
星球公民
文章: 61
註冊時間: 2003-09-28 14:04
來自: 宇宙
聯繫:

文章 傳說中的ET »

stevenbb 寫:我的也都不行
:-o 只要是中文都不行
最新的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看看他們怎麼說好了
傳說中的ET=傳說中的傳說
stevenbb
星球公民
星球公民
文章: 43
註冊時間: 2001-12-12 00:06
來自: 黑洞

文章 stevenbb »

傳說中的ET 寫: 官網不是用phpBB內建搜尋,是Google
http://www.phpbb.com/community/search.php

這頁是Google?是你認錯還是真是如此
我可不是用logo圖上面那個放大鏡

我的 php 是 4.4.6
php infomation 中顯示 pcre 是啟動的,也是沒用

更新到最新 4.4.7 還是一樣
uduh
星球普通子民
星球普通子民
文章: 7
註冊時間: 2003-05-23 15:43
來自: 阿度的暗房
聯繫:

文章 uduh »

問題解決了,
詞頻閾值調高後,重建索引就可以正常搜尋中文。


感謝各位及michaelchain兄的指導,造成各位的困擾! :oops:
傳說中的ET
星球公民
星球公民
文章: 61
註冊時間: 2003-09-28 14:04
來自: 宇宙
聯繫:

文章 傳說中的ET »

stevenbb 寫:
傳說中的ET 寫: 官網不是用phpBB內建搜尋,是Google
http://www.phpbb.com/community/search.php

這頁是Google?是你認錯還是真是如此
我可不是用logo圖上面那個放大鏡

我的 php 是 4.4.6
php infomation 中顯示 pcre 是啟動的,也是沒用

更新到最新 4.4.7 還是一樣
當然是我看錯....抱歉了 :oops:
詞頻閾值調高後,重建索引就可以正常搜尋中文。
請問那個選項的英文是?我沒裝中文語系檔 :-?
可是我一直覺得不是那個問題
就算不是pcre的問題
它出現錯誤訊息的時候,你會發現他在每個中文字間都有空格,所以他認為你打的字沒有超過三個字,不給你搜尋

完完全全一樣的論壇,在我的Fedora6就可以搜尋,CentOS4就不能搜尋...
這不是很奇怪嗎 :roll:
我去重建索引看看...
傳說中的ET=傳說中的傳說
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8513
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

uduh 寫:問題解決了,
詞頻閾值調高後,重建索引就可以正常搜尋中文。


感謝各位及michaelchain兄的指導,造成各位的困擾! :oops:
或許, 關鍵在於是否有執行 '重建索引'.

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

圖檔
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
stevenbb
星球公民
星球公民
文章: 43
註冊時間: 2001-12-12 00:06
來自: 黑洞

文章 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 的條件不良也搜尋不到
每個詞都被拆為單一一個字
這怎麼接受阿
傳說中的ET
星球公民
星球公民
文章: 61
註冊時間: 2003-09-28 14:04
來自: 宇宙
聯繫:

文章 傳說中的ET »

好神奇....
後來,連我Fedora6都有問題了
超奇怪....(原本沒問題啊...還是說我本來就沒測試好?)
還有更奇怪的
後來,我在CentOS4上重建索引,沒用

改成Fulltext mysql,竟然就可以了...
但是很多東西都找不到
後來改回Fulltext native,竟然可以用了...
毫無頭緒 :-? ...
更怪的是,每個字之間還是有空格....

完完全全搞不懂
傳說中的ET=傳說中的傳說
michaelchain
星球公民
星球公民
文章: 129
註冊時間: 2006-10-17 03:13

文章 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
※伺服器主機:Intel Core2 酷睿™2 E6300, 升級到4GB RAM了
※主機作業系統:CentOS 4 Linux
※我的 phpBB 版本:phpBB3.0.?
※我的網址: 中文PHPBB
蝦米尚青
星球普通子民
星球普通子民
文章: 22
註冊時間: 2002-11-28 12:21
來自: 網賺部落格
聯繫:

文章 蝦米尚青 »

我將詞頻閾值調成30%之後重建索引
目前中文搜尋正常
最後由 蝦米尚青 於 2007-10-04 21:52 編輯,總共編輯了 1 次。
傳說中的ET
星球公民
星球公民
文章: 61
註冊時間: 2003-09-28 14:04
來自: 宇宙
聯繫:

文章 傳說中的ET »

michaelchain 寫: 話題回到phpbb上來. 因為phpbb并不是特別為中文開發的軟體, 所以并不帶分詞算法, 對于中文來講, phpbb實際上就是將搜索詞分成一串漢字, 每個漢字作為一個單詞存在索引中, 閾值就是避免檢索出現過于頻繁的字. 如果閾值設為30%, 那么如果你的數據庫中所有文章包含了10,000個漢字, 而"的"字出現了3,001次, 重建索引后這個"的"字就會被從檢索條目中刪掉.
所以說,phpBB本來就把每個漢字都當成一個詞在搜尋囉?原來如此...
這解釋了很多,感謝分享!
傳說中的ET=傳說中的傳說
michaelchain
星球公民
星球公民
文章: 129
註冊時間: 2006-10-17 03:13

文章 michaelchain »

參考vbb3中文版的二分法分詞原理, 已經將phpBB3的中文分詞改進...
現在不會再出現那么多 X X X 被忽略的情況了.

可以到我的論壇去搜索試試效果.

基于詞庫的分詞也已經成功(借鑒了dedecms的分詞程式, 但是從gbk轉換至utf8花了我不少工夫). 相比較二分法, 這個分詞法能產生更加貼切和精簡的分詞結果, 極大的減小了索引表的大小, 但是這種分詞法太耗時間, 經過測試, 原phpbb3提供的分詞下, 某文章發表需時0.6s, 二分法則需時0.9s, 如果用詞庫分詞, 需時接近3s.

現在知道為什么Discuz為什么發帖那么快了... 它根本就不建索引, 在Discuz6里面還是用的like '%xxx%' 的形式來搜索, orz
※伺服器主機:Intel Core2 酷睿™2 E6300, 升級到4GB RAM了
※主機作業系統:CentOS 4 Linux
※我的 phpBB 版本:phpBB3.0.?
※我的網址: 中文PHPBB
主題已鎖定

回到「[3.0.x] 安裝與使用」