將 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 的動作一樣囉。