但是我想獅身人面像與我的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,
不知道。可能是防火牆問題。
當你這麼說的時候,sphinx可以託管很多索引,它是僅僅依賴於sphinx.conf配置文件嗎?其實我需要重新說明我的問題,我的問題應該是sphinx可以在一個數據庫中索引所有表,如果是的話,在配置文件中修改什麼? – xybrek 2012-07-28 17:06:59
當你說「給你看起來像一個mysql的服務器」時,你的意思是像一個代理,我的MySQL客戶端可以連接到這個Sphinx端口,客戶端會認爲它是一個MySQL服務器?如果是這樣,那麼我可以在同一個連接上同時執行MySQL SQL查詢和SphinxQL?如果是這樣,爲什麼我的MySQL Workbench無法連接到端口9306,當它可以連接到端口3306(默認MySQL端口)? – xybrek 2012-07-28 17:09:52
回覆編輯回覆中的額外問題... – barryhunter 2012-07-28 21:06:08