將 MSSQL 的資料用 Sphinx 來做全文檢索
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 的動作一樣囉。