2012-07-28 79 views
6

我想爲我的MySQL服務器使用Sphinx全文搜索功能。 我已經根據安裝手冊設置了本地Sphinx服務,並且可以進行文本搜索。將獅身人面像整合到MySQL

我可以連接到

mysql.exe --host=127.0.0.1 port=9306 

凡口9306的sphinx.conf配置的端口:

searchd { 
... 
listen = 9306:mysql41 
... 
} 

而且做SphinxQL查詢。我正在使用發行包附帶的默認Sphinx示例數據庫。

但是我想獅身人面像與我的MySQL服務器整合,使得所有的客戶端連接到我的SQL Server可以做SphinxQL,我想用MySQL的示例數據庫來嘗試一下sakila

  • 什麼步驟來實現這一目標?
  • 我需要將數據庫引擎從InnoDB轉換爲Sphinx嗎?
  • 另外,從它看來,Sphinx只能索引一個(1)數據庫 表每個配置,我如何確保 MySQL數據庫中的所有表得到索引?

回答

12

但是我想獅身人面像與我的MySQL服務器整合,使得所有連接到我的SQL服務器的客戶端可以做SphinxQL

不能做到這一點。獅身人面像(當爲sphinxQL啓用時)只是給你一個服務器,看起來像一個mysql的 - 即它使用相同的通信協議 - 主要是可以重新使用mysql客戶端庫,而不是隻爲獅身人面像一個新的。

他們是不同的'服務器'。你連接到一個mysql服務器來運行mysql命令;你連接到獅身人面像服務器來運行sphinxQL命令。

應用程序必須分別連接到每個「服務器」。試想一下,獅身人面像是像postgres的東西,你顯然不連接到MySQL,並期望能夠運行postgresql。

但是有SphinxSE - 這是一個虛假的mysql存儲引擎。你將它安裝到mysql中,然後你可以使用這個引擎創建一個表。然後你對這個表運行mysql查詢,底層是聯繫一個正在運行的sphinx-server。因此,對於mysql來說,它看起來像一個包含數據的表,這是非常有用的,因爲可以將該搜索表與原始數據表「加入」,以便在一個mysql查詢中獲取結果和原始數據。

應用程序不必連接到獅身人面像本身。 SphinxSE爲你做。

http://sphinxsearch.com/docs/current.html#sphinxse

我需要轉換從InnoDB的數據庫引擎獅身人面像?

No.您可以使用您喜歡的任何引擎,將原始數據保留在原來的位置。獅身人面像只提供一個'索引' - 它不存儲原始數據*。它不是一個數據庫,只是通過高度優化的索引提供快速查詢。

基本上你問獅身人面像的文件與特定查詢匹配的唯一ID。然後使用這些ID查找數據。 SphinxAPI,sphinxSE和sphinxQL只是三種不同的機制。

另外,從它看來,獅身人面像只能索引每個配置一(1)數據庫表,

號單獅身人面像實例可以承載多個指標。索引可以有很多來源。所以可以爲每個表創建一個索引。或者如果你主要想一起搜索它們,可以創建一個合併索引。

- **編輯回覆中留言質疑:**

當你說,獅身人面像可容納多項指標,是它的sphinx.conf配置文件中僅僅依靠?

您可能會爲每個表定義一個sphinx索引。所以你需要每個表的源/索引對。 (除非你在一個索引想索引的所有表,whihch也是可能的。

它不能讀取表本身,並創建配置文件,您必須單獨定義每個索引。

當你說「讓你看起來像一個mysql一個服務器的」你的意思是像一個代理,

不,不是的代理。

在我的MySQL客戶端可以連接到這個端口的獅身人面像的d客戶會認爲它是一個MySQL服務器?

基本上是的。客戶端將以與連接到mysql服務器的方式連接。

如果是這樣,那麼我可以同時執行MySQL SQL查詢和SphinxQL?

不可能。連接到mysql-server,運行mysql查詢。連接到searchd以運行sphinxQL查詢。

兩個連接,每個服務器一個連接。

爲什麼我的MySQL工作臺無法連接到端口9306,

不知道。可能是防火牆問題。

+0

當你這麼說的時候,sphinx可以託管很多索引,它是僅僅依賴於sphinx.conf配置文件嗎?其實我需要重新說明我的問題,我的問題應該是sphinx可以在一個數據庫中索引所有表,如果是的話,在配置文件中修改什麼? – xybrek 2012-07-28 17:06:59

+0

當你說「給你看起來像一個mysql的服務器」時,你的意思是像一個代理,我的MySQL客戶端可以連接到這個Sphinx端口,客戶端會認爲它是一個MySQL服務器?如果是這樣,那麼我可以在同一個連接上同時執行MySQL SQL查詢和SphinxQL?如果是這樣,爲什麼我的MySQL Workbench無法連接到端口9306,當它可以連接到端口3306(默認MySQL端口)? – xybrek 2012-07-28 17:09:52

+0

回覆編輯回覆中的額外問題... – barryhunter 2012-07-28 21:06:08