[討論] 搜尋系統的幾個問題

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

版主: 版主管理群

版面規則
本區是討論關於 phpBB 3.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
danny212
星球普通子民
星球普通子民
文章: 8
註冊時間: 2008-12-03 00:50

[討論] 搜尋系統的幾個問題

文章 danny212 »

問題1:例如搜尋「天才」,結果有n頁,在第一頁會反白「天才」,但換頁後變成分開反白「天 才」。

下面是我試過的解決方法,把search.php檔的連結改掉,使後面幾頁的參數和第一頁一致。目前尚未發現問題。

開啟:search.php
尋找:

代碼: 選擇全部

$u_search .= ($u_hilit) ? '&keywords=' . urlencode(htmlspecialchars_decode($search->search_query)) : '';
改為:

代碼: 選擇全部

$u_search .= ($u_hilit) ? '&keywords=' . urlencode(htmlspecialchars_decode($keywords)) : '';

問題2:進階搜尋指定「返回第一頁: 0個字元」時,呈現結果會很奇怪。本來應該在開頭的關鍵字會掉到最後,且呈現總字數會非常多。

嘗試的解決方法:把代表分段字數的變數指定最小值 0 ,似乎比較正常。

開啟:includes/functions_content.php
尋找:

代碼: 選擇全部

$sequence_length = (int) ($length / (2 * $wordnum)) - 2;
改為:

代碼: 選擇全部

$sequence_length = max((int) ($length / (2 * $wordnum)) - 2, 0);
主要是 get_context 函數的問題,不過目前我看了很久,還是不太瞭解整個函數的用意...
像公式 ($length / (2 * $wordnum)) - 2 不知代表什麼意義。
// make sure the text really reaches the end
$j -= 4;
這段程式碼也匪夷所思

此外文章返回 0 字元和只傳回主題,也不知有什麼不同...


另外,建議翻譯改一下,檔案是語言檔的 search.php:
返回第一頁: → 返回文章最前面的:
所有文章 → 所有
個字元 → 字元
(另外討論於: http://phpbb-tw.net/phpbb/viewtopic.php ... 80#p269647

問題3:phpbb會把中文切成一字一字,例如搜尋「中文二分法」,會切成「中 文 二 分 法」,導致搜尋結果極不精確,結果中很多主題實際上不包含完整的「中文二分法」字串。

對岸有人做了二字分詞的修改,也就是切成「中文 文二 二分 分法」建立索引與搜尋。
http://www.phpbbchina.com/forum/viewtop ... =23&t=3338

但是照做後,我發現如果搜尋像「法」這樣的單字,反而找不到東西。不知是否有辦法進一步改進這個問題?
最後由 danny212 於 2008-12-30 11:14 編輯,總共編輯了 1 次。
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8538
註冊時間: 2004-04-30 01:54
來自: Taiwan

Re: [討論] 搜尋系統的幾個問題

文章 心靈捕手 »

danny212 寫:問題1:例如搜尋「天才」,結果有n頁,在第一頁會反白「天才」,但換頁後變成分開反白「天 才」。

下面是我試過的解決方法,把search.php檔的連結改掉,使後面幾頁的參數和第一頁一致。目前尚未發現問題。

開啟:search.php
尋找:

代碼: 選擇全部

$u_search .= ($u_hilit) ? '&keywords=' . urlencode(htmlspecialchars_decode($search->search_query)) : '';
改為:

代碼: 選擇全部

$u_search .= ($u_hilit) ? '&keywords=' . urlencode(htmlspecialchars_decode($keywords)) : '';

問題2:進階搜尋指定「返回第一頁: 0個字元」時,呈現結果會很奇怪。本來應該在開頭的關鍵字會掉到最後,且呈現總字數會非常多。

嘗試的解決方法:把代表分段字數的變數指定最小值 0 ,似乎比較正常。

開啟:includes/functions_content.php
尋找:

代碼: 選擇全部

$sequence_length = (int) ($length / (2 * $wordnum)) - 2;
改為:

代碼: 選擇全部

$sequence_length = max((int) ($length / (2 * $wordnum)) - 2, 0);
主要是 get_context 函數的問題,不過目前我看了很久,還是不太瞭解整個函數的用意...
像公式 ($length / (2 * $wordnum)) - 2 不知代表什麼意義。
// make sure the text really reaches the end
$j -= 4;
這段程式碼也匪夷所思

此外文章返回 0 字元和只傳回主題,也不知有什麼不同...


另外,建議翻譯改一下,檔案是語言檔的 search.php:
返回第一頁: → 返回文章最前面的:
所有文章 → 所有
個字元 → 字元


問題3:phpbb會把中文切成一字一字,例如搜尋「中文二分法」,會切成「中 文 二 分 法」,導致搜尋結果極不精確,結果中很多主題實際上不包含完整的「中文二分法」字串。

對岸有人做了二字分詞的修改,也就是切成「中文 文二 二分 分法」建立索引與搜尋。
http://www.phpbbchina.com/forum/viewtop ... =23&t=3338

但是照做後,我發現如果搜尋像「法」這樣的單字,反而找不到東西。不知是否有辦法進一步改進這個問題?
問題1, 3: 個人以為, 原本的搜尋結果都不是問題.
問題2: 建議您到官方反映.
P.S.
中文修改建議, 請另外至 "phpbb 3 中文" 版面發表;
如果可以的話, 請附原文參考.
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
danny212
星球普通子民
星球普通子民
文章: 8
註冊時間: 2008-12-03 00:50

Re: [討論] 搜尋系統的幾個問題

文章 danny212 »

不知「phpbb 3.0 中文」版面是只討論「和翻譯有關的問題」,或者「phpbb 原本沒有但在中文版才有的問題」也可以討論?若是後者,那在下似乎應該在該版面發起這篇主題才對XD
心靈捕手 寫:問題1, 3: 個人以為, 原本的搜尋結果都不是問題.
問題2: 建議您到官方反映.
P.S.
中文修改建議, 請另外至 "phpbb 3 中文" 版面發表;
如果可以的話, 請附原文參考.
翻譯問題已另開主題討論。


關於 1,個人的想法是,第一頁的呈現方式和其他頁的呈現方式不同,就是不合理的現象,應該把第一頁改為和其他頁相同,或者把其他頁改為和第一頁相同。

中文會被切開搜尋,造成精確度低,大家都已知道。但第一頁只反白整段中文的呈現方式,能讓真的只想找整段中文的人,可以用眼睛快速篩掉那些他不想要的文章。而如果想看到像後幾頁的呈現方式,一開始就把中文切開輸入即可。

此外反白的參數也不僅僅只是反白,還關係到如何在有限字元數的情況下看到正確結果,例如我找「天才」,也許有一篇文章是這樣的:
天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,
......(一大串和「天」、「才」無關的字元)......
天才
如果照第一頁的呈現方式,會看到從「天才」那段開始呈現;而如果是照後幾頁的方式,會從「天有才人」那邊就開始呈現,而真正「天才」那段很可能根本看不到。


關於 3,就原文的 phpbb 來說,當然完全沒有問題。但對我們這些中文使用者而言,搜尋結果的精確與否相當重要。原本我找個「天才」,只有 2、3 頁是我要的,但卻因為斷詞問題平白無故多出 10 幾頁只有「天」「才」而無「天才」的假結果,偏偏很多站台又會限制搜尋的使用間隔為 5 秒 10 秒 30 秒,多看幾頁就要多花好幾倍的時間...

而對岸的中文資源站有照此方法改良,確實在尋找中文「詞」的時候精確度提高了非常多,代價如果只是 MySQL 資料庫會增加 2~3 倍,倒不失為不錯的方法。只是因為有我提到的找中文單字不良的情形,所以才希望能集思廣義,打造更便利中文使用者的環境。
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8538
註冊時間: 2004-04-30 01:54
來自: Taiwan

Re: [討論] 搜尋系統的幾個問題

文章 心靈捕手 »

danny212 寫:不知「phpbb 3.0 中文」版面是只討論「和翻譯有關的問題」,或者「phpbb 原本沒有但在中文版才有的問題」也可以討論?若是後者,那在下似乎應該在該版面發起這篇主題才對XD
心靈捕手 寫:問題1, 3: 個人以為, 原本的搜尋結果都不是問題.
問題2: 建議您到官方反映.
P.S.
中文修改建議, 請另外至 "phpbb 3 中文" 版面發表;
如果可以的話, 請附原文參考.
翻譯問題已另開主題討論。


關於 1,個人的想法是,第一頁的呈現方式和其他頁的呈現方式不同,就是不合理的現象,應該把第一頁改為和其他頁相同,或者把其他頁改為和第一頁相同。

中文會被切開搜尋,造成精確度低,大家都已知道。但第一頁只反白整段中文的呈現方式,能讓真的只想找整段中文的人,可以用眼睛快速篩掉那些他不想要的文章。而如果想看到像後幾頁的呈現方式,一開始就把中文切開輸入即可。

此外反白的參數也不僅僅只是反白,還關係到如何在有限字元數的情況下看到正確結果,例如我找「天才」,也許有一篇文章是這樣的:
天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,天有才人,
......(一大串和「天」、「才」無關的字元)......
天才
如果照第一頁的呈現方式,會看到從「天才」那段開始呈現;而如果是照後幾頁的方式,會從「天有才人」那邊就開始呈現,而真正「天才」那段很可能根本看不到。


關於 3,就原文的 phpbb 來說,當然完全沒有問題。但對我們這些中文使用者而言,搜尋結果的精確與否相當重要。原本我找個「天才」,只有 2、3 頁是我要的,但卻因為斷詞問題平白無故多出 10 幾頁只有「天」「才」而無「天才」的假結果,偏偏很多站台又會限制搜尋的使用間隔為 5 秒 10 秒 30 秒,多看幾頁就要多花好幾倍的時間...

而對岸的中文資源站有照此方法改良,確實在尋找中文「詞」的時候精確度提高了非常多,代價如果只是 MySQL 資料庫會增加 2~3 倍,倒不失為不錯的方法。只是因為有我提到的找中文單字不良的情形,所以才希望能集思廣義,打造更便利中文使用者的環境。
您說的現象並非 "中文" 才有,
莫非您很少使用 "英文" 搜尋?
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
danny212
星球普通子民
星球普通子民
文章: 8
註冊時間: 2008-12-03 00:50

Re: [討論] 搜尋系統的幾個問題

文章 danny212 »

在下確實較少使用英文搜尋,但英文常以單字 (word) 為主,需要針對「連在一起的數個單字」搜尋的機會較少,反觀中文大量以找詞為主,問題就顯得嚴重(不知日文、韓文會怎樣...XD)。

無論如何,感謝閣下長期以來在竹貓的貢獻。
閣下如無興趣處理此問題,自便即可,但在下希望也願意盡點力去解決這些現象。

P.S: 引言的長度可否稍為減少些?且引用「最後一篇回覆的文章」也不是非常必要
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8538
註冊時間: 2004-04-30 01:54
來自: Taiwan

Re: [討論] 搜尋系統的幾個問題

文章 心靈捕手 »

danny212 寫:在下確實較少使用英文搜尋,但英文常以單字 (word) 為主,需要針對「連在一起的數個單字」搜尋的機會較少,反觀中文大量以找詞為主,問題就顯得嚴重(不知日文、韓文會怎樣...XD)。

無論如何,感謝閣下長期以來在竹貓的貢獻。
閣下如無興趣處理此問題,自便即可,但在下希望也願意盡點力去解決這些現象。

P.S: 引言的長度可否稍為減少些?且引用「最後一篇回覆的文章」也不是非常必要
我的確 "無興趣處理此問題";
只是希望導正您的錯誤觀念.

搜尋的 "關鍵字", 必須自行斟酌, 沒有絕對的法則;
搜尋的 "結果", 必須自行負責, 沒有必要鑽牛角尖.


這是我最後一次針對您的問題回覆:
問題1:
一般而言, 使用者面對搜尋的結果, 大抵只會瀏覽前面幾頁; 非得必要, 不會從頭到尾, 瀏覽全部搜尋結果.
因為, 如果 "關鍵字" 下得好的話, 那麼前面幾頁, 即可獲得滿意的結果.

問題3:
以中文使用者的習慣而言, 幾乎不會使用 "單字" 作為搜尋關鍵字.
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
krab
星球公民
星球公民
文章: 119
註冊時間: 2004-06-28 08:00

Re: [討論] 搜尋系統的幾個問題

文章 krab »

謝謝您,任何改進中文搜尋功能的努力都值得加油跟鼓勵!我在備份的論壇測試,重新建立索引中。

不過,重建索引是超大工程,從上週五晚上一直到現在,30萬篇文章只索引了大約2/3。

請教除了經由後台重新建立索引之外,能不能直接在linux的shell直接下指令重建索引呢?那樣有沒有可能比較快?
有請高手解惑,謝謝 :-D
過山雲
竹貓忠實會員
竹貓忠實會員
文章: 390
註冊時間: 2002-09-05 20:11
來自: 東都.承天府.萬年縣治.拱辰門北
聯繫:

Re: [討論] 搜尋系統的幾個問題

文章 過山雲 »

重新建立索引真的很花費時間並加重了伺服器的負擔
圖檔
主題已鎖定

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