將 MSSQL 的資料用 Sphinx 來做全文檢索

發表時間: 2010-11-17 19:47:51
一劃 @ 61.56.133.15

Sphinx 是利用 unixodbc 去跟其他資料庫要資料的,所以要先確認是否已經有安裝 unixodbc。 安裝 unixodbc, unixodbc-dev $ sudo apt-get install unixodbc unixodbc-dev

再來就是要和 MSSQL 溝通,這部分要用 FreeTDS,而 unixodbc 和 FreeTDS 的接法可參考 http://www.unixodbc.org/doc/FreeTDS.html

取得 FreeTDS 最新版本,ubuntu 有 FreeTDS 套件,但缺少了 libtdsodbc.so,所以就自己產出了。 wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz $ ./configure --with-tdsver=8.0 --with-unixodbc=/usr --prefix=/usr/local/freetds $ make $ sudo make install

該有的東西都有了後,就可以開始設定了 unixodbc 連接 mssql

編輯設定檔 $ sudo vi /etc/odbcinst.ini [FreeTDS] Description = v0.63 with protocol v8.0 Driver = /usr/local/freetds/lib/libtdsodbc.so Setup = /usr/lib/libtdsS.so

$ sudo vi /etc/odbc.ini [MSSQL] Driver = FreeTDS Description = apdata database Trace = No Server = xxx.xxx.xxx.xxx Port = 1433 Database = apdata

$ sudo odbcinst -i -d -f /etc/odbcinst.ini $ sudo odbcinst -i -s -f /etc/odbc.ini

測試是否有成功連接。 $ isql -v MSSQL {USERNAME} {USERPASSWORD} 出現以下的畫面,就表示成功了 +---------------------------------------+ Connected!
sql-statement
help [tablename]
quit

+---------------------------------------+ SQL>

再接下來是設定 sphinx 的部分 編輯 sphinx.conf

$ sudo vi /usr/local/sphinx/etc/sphinx.conf 主要在 source 部分 source mssqlSrc { type = odbc sql_host = XXX.XXX.XXX.XXX sql_user = {YOURSQLUSERNAME} sql_pass = {YOURPASSWORD} sql_db = {DATABASENAME} sql_port = 1433

   odbc_dsn = DSN=MSSQL;Driver={/etc/odbc.ini};Uid={NAME};Pwd={PASS}
   sql_query = SELECT id, bla..bla..bla.. FROM {TABLE}

} 跟 mysql 設定沒有太大差別,主要就到 type 改成 odbc odbc_dsn 要設定成你設的相關參數,以這個例子來說 DSN=MSSQL <= MSSQL 就是在 /etc/odbc.ini 裡設定的 [MSSQL] Driver={/etc/odbc.ini} 就是你設定檔位置 Uid={NAME} 和 MSSQL 溝通時的身份名稱 Pwd={PASS} 和 MSSQL 溝通時用的身份的密碼

接下來就和以之前建立 sphinx index 的動作一樣囉。

回應文章