當前位置:開發者網絡 >> 技術教程 >> ASP教程 >> 全文檢索 >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
一起特殊中文全文檢索問題的解決(探索者)
作者:未知
日期:2003-07-11
人氣:
投稿:Andy.m(轉貼)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:
作者:ASP精品屋 探索者

事件起因:

  好幾個月前,我製作的某個網站覺得有必要採用全文索引擎,簡單地自己的電腦上測試了一下全文索引,搜索一些英文字符沒有問題,但搜索中文時就出現「查詢子句只包含被忽略的詞」的錯誤,任何中文都是如此。由於此網站不是很急,也就過去了。近幾天,我原來製作好的一個網站需要轉移,它使用了全文索引。突然發現新的專業服務器不能搜索中文,由於事情很急,我必須是幾天內解決此問題。

錯誤信息:

  服務器: 消息 7619,級別 16,狀態 1,行 2
  查詢子句只包含被忽略的詞。


錯誤疑點:

  全文索引在原來的服務器上運行一切正常,新的服務器則在搜索中文時出現上述錯誤。經過比較,我發現除了硬件條件不一樣外,其它的運行環境都相同:
  1. 操作系統均採用Win2000 Server + SP2 簡體中文版
  2. 數據庫均採用Microsoft SQL Server 2000 + SP1 簡體中文版
  3. SQL數據庫安裝時均採用默認設置,其中默認的排序方式為Chinese_RPC
  4. 數據完全一致,我通過直接附加.mdf數據庫和導入數據功能,移植網站均不能正常進行中文全文檢索
  5. 數據庫的各種排序方式均一樣,使用的全文索引語言都是「中文(中國)」,代號兼為2052

  以上的相同點構成了他們在軟件上完全的一致性,但為何會出現移植後的網站不能運行呢?

解決過程:

  首先,還是自己來試試各種可能的方法吧

  在兩天時間裡,我用了以下各種不同的方法。
  1. 刪除移植目標服務器上的全部全文索引,然後重做。我發現在重做索引時所花的時間讓我不敢相信的短,雖然硬件性能可能有上倍的提高,但全文索引大部分是靠硬盤的性能,竟然只花了一個上午就完成了(原先的重建全文索引需要3 天3夜)。
  2. 我試著將所有的「單詞段字符的語言」改為Neutral,既無語言狀態,中文總算可以搜索了,但這很讓人失望,它將所有沒用符號隔開的字母和中文作為一個字兒來看待(比如有一句話「This中dk要我的在順楞」,只有用搜索詞「This 中dk要我的在順楞」才能檢索到,單用「this」或「順」等字符連個影兒都找不著,這當然不是我的目的)。
  3. 後來我將數據庫排序方式改為Chinese_PRC_bin,結果更糟,原來的數據庫根本不適合這種方式。
  4. 使用數據庫附加和導入方式重建數據庫,仍未能成功
  5. 看來只能重裝SQL Server軟件來試試了。但安裝完成後仍不能運行。後來我懷疑是不是跟安裝了新版的SP1有關,經測試,與此無關。

  自己不會,還可以問人

  我立即到Chinaasp論壇註冊了一個會員「真的很重要」,分別在Joy ASP和「數據庫探討」發了一個同樣帖子詢問。呆了一會兒,看我帖子的人倒是不少,但沒有一人回答。
  幾個小時後,我重新登陸論壇,Joy ASP人氣太高,帖子擠得太后了,仍然無任何人跟帖,倒是在「數據庫探討」中有人給了一些提示,問我些條件和問題。但都是多餘,對我毫無幫助。最後斑主_Rambo言自己亦無能為力,到時問問正斑主再說。一個名為蕭湘劍公子的會員要我在搜索字符串前加上N如N'str',我試過了,當然也不行。

  最後還是自己想到了

  我記得有部電視劇「快嘴李翠蓮」,其中的案件通過「順籐摸瓜」最終都水落石出,我衝著這四個字,總算讓我摸到了想要的「瓜」-產生中文全文索引不正常的真正原因。
  這裡的籐的起點當然就是SQL語句執行所提示的錯誤「查詢子句只包含被忽略的詞。 」,核心詞兒是「忽略的詞」,我知道忽略的詞是指全文索引屏蔽搜索的詞兒,比如中文的「的」等。從「忽略的詞」這根籐延伸出去,可以有很多:
  1. 所使用的搜索詞就是忽略詞,當然,我使用的搜索詞肯定也就是在目前系統看來正是忽略詞無疑。但平時根本不是忽略詞的詞都成了忽略詞就不正常了。
  2. 忽略詞包含在名為noise.*的文件中,他們放置在MSSQL的安裝目錄的「MSSQL\FTDATA\SQLServer\Config」目錄下面,比如中文的忽略詞放在noise.chs中。
  3. 我突然發現我的電腦上中沒有noise.chs,我的電腦也正不能正常使用中文全文索引。
  4. 由於服務器現在不方便連上,我在邊上的一台為沒安裝SQL的電腦上安裝了MSSQL,但很失望,安裝後沒有產生 noise.chs
  5. 我抱著試一試的心情,沒想到在C盤的system32目錄下找到了一大段的名為noise的文件,我將它們全部複製到MSSQL的安裝目錄的「MSSQL\FTDATA\SQLServer\Config」下面,期待的奇跡終於出現,中文可以正常使用全文索引了!最後附上一個zip文件,如果你沒有此類noise文件,可以在此下載。

  Well, 大家以後多試試「順籐摸瓜」吧,不過要是不知道連接著瓜的那根籐就慘了:)

相關文章: