關于對sql2000查詢結果進行相關度排序的測試
sql2000的查詢結果進行相關度排序,聽起來好象很吸引人,不過真的是可以實現的。 上午上網看到了一篇利用微軟index server來做全文查詢的文章(這個以前也看到過,在計算機管理中也自帶了這樣一個查詢功能)我的IIS默認web服務器在g:/wwwroot下其中有10萬多的html文檔 測試:strSearch = 'SELECT DocTitle, Path, FileName, Characterization, Size,write,RANK' & _ ' FROM SCOPE()' & _ ' WHERE CONTAINS ('' & Request.Form('txtSearchFor') & '') ORDER BY RANK; desc' 還進行了相關度的排序,我沒有做時間的具體開銷的計算,不過給人的感覺還可以接受,在翻頁的時候就非常快了。不過最大的缺點好象就是只能索引靜態頁面了。 下午我把以前的一個50多萬條記錄(主要是歌曲名和歌手名)的數據庫在sql2000做了索引,晚上就可以開始測試了。 測試一: 'select top 26 * from song1 where contains(songtitle,'愛')',對結果沒有進行任何的處理,只是按照ID的升續排列時間開銷基本上維持在0.016s,速度是很讓人滿意的,至少感覺不到慢。
測試二:利用rank值進行了相關度的排序,'order by rank desc' or 'order by rank asc',查詢結果在排序的質量上讓人滿意,都比較準確的,不管是查詢時使用 or 或者and進行多關鍵字的排序都還可以的,不過時間的開銷讓我受不了,居然在6s到8s之間,而且cpu也占用比較高 我看到網上其他的搜索的相關度排序都比較快的,開源的Lucene我沒有研究過,因為我不懂java。不過我想如果在索引的時候對每個關鍵字進行相關度的運算查詢起來應該不會慢的啊,這個我也感到郁悶。