searchd命令參考
searchd 也是sphinx的兩個關鍵工具之一。 searchd是系統實際上處理搜索的組件,運行時它表現得就像一種服務,他與客戶端應用程序調用的五花八門的API通訊,負責接受查詢、處理查詢和返回數據集。
不 同於 indexer, searchd 並不是設計用來在命令行或者一般的腳本中調用的, 相反,它或者做為一個守護程序(daemon)被init.d調用(在Unix/Linux類系統上),或者做為一種服務(在Windows類系統上), 因此並不是所有的命令行選項都總是有效,這與構建時的選項有關。
調用 searchd 就像這么簡單:
$ searchd [OPTIONS]
不管 searchd 是如何構建的,下列選項總是可用:
--help (可以簡寫為 -h ) 列出可以在你當前的 searchd 構建上調用的參數。--config <file> (可簡寫為 -c <file>) 使 searchd 使用指定的配置文件,與上述indexer的--config開關相同。--stop 用來停掉 searchd,使用sphinx.conf中所指定的PID文件,因此您可能還需要用--config選項來確認searchd使用哪個配置文件。值得 注意的是,調用 --stop 會確保用
UpdateAttributes() 對索引進行的更動會反應到實際的索引文件中去。示例: $ searchd --config /home/myuser/sphinx.conf --stop
--status 用來查詢運行中的searchd實例的狀態,,使用指定的(也可以不指定,使用默認)配置文件中描述的連接參數。它通過配置好的第一個UNIX套接字或 TCP端口與運行中的實例連接。一旦連接成功,它就查詢一系列狀態和性能計數器的值並把這些數據打印出來。在應用程序中,可以用 Status() API調用來訪問相同的這些計數器。示例: $ searchd --status
$ searchd --config /home/myuser/sphinx.conf --status
--pidfile 用來顯式指定一個PID文件。PID文件存儲着關於searchd的進程信息,這些信息用於進程間通訊(例如indexer需要知道這個PID以便在輪換 索引的時候與searchd進行通訊)searchd在正常模式運行時會使用一個PID(即不是使用--console選項啟動的),但有可能存在 searchd在控制台(--console)模式運行,而同時正在索引正在進行更新和輪換操作的情況,此時就需要一個PID文件。 $ searchd --config /home/myuser/sphinx.conf --pidfile /home/myuser/sphinx.pid
--console 用來強制searchd以控制台模式啟動;典型情況下searchd像一個傳統的服務器應用程序那樣運行,它把信息輸出到(sphinx.conf配 置文件中指定的)日志文件中。但有些時候需要調試配置文件或者守護程序本身的問題,或者診斷一些很難跟蹤的問題,這時強制它把信息直接輸出到調用他的控制 台或者命令行上會使調試工作容易些。同時,以控制台模式運行還意味着進程不會fork(因此搜索操作都是串行執行的),也不會寫日志文件。(要特別注 意,searchd並不是被主要設計用來在控制台模式運行的)。可以這樣調用searchd: $ searchd --config /home/myuser/sphinx.conf --console
--iostats 當使用日志時(必須在sphinx.conf中啟用query_log選項)啟用--iostats會對每條查詢輸出關於查詢過程中發生的輸入輸出操作的詳細信息,會帶來輕微的性能代價,並且顯然會導致更大的日志文件。更多細節請參考 query log format 一節。可以這樣啟動searchd: $ searchd --config /home/myuser/sphinx.conf --iostats
--cpustats 使實際CPU時間報告(不光是實際度量時間(wall time))出現在查詢日志文件(每條查詢輸出一次)和狀態報告(累加之后)中。這個選項依賴clock_gettime()系統調用,因此可能在某些系 統上不可用。可以這樣啟動searchd: $ searchd --config /home/myuser/sphinx.conf --cpustats
--port portnumber (可簡寫為 -p) 指定searchd監聽的端口,通常用於調試。這個選項的默認值是9312,但有時用戶需要它運行在其他端口上。在這個命令行選項中指定端口比配置文件中 做的任何設置優先級都高。有效的端口范圍是0到65535,但要使用低於1024的端口號可能需要權限較高的賬戶。使用示例: $ searchd --port 9313
--index <index> 強制searchd只提供針對指定索引的搜索服務。跟上面的--port相同,這主要是用於調試,如果是長期使用,則應該寫在配置文件中。使用示例: $ searchd --index myindex
--status 用來查詢運行中的searchd實例的狀態,,使用指定的(也可以不指定,使用默認)配置文件中描述的連接參數。它通過配置好的第一個UNIX套接字或 TCP端口與運行中的實例連接。一旦連接成功,它就查詢一系列狀態和性能計數器的值並把這些數據打印出來。在應用程序中,可以用 Status() API調用來訪問相同的這些計數器。示例: $ searchd --status
$ searchd --config /home/myuser/sphinx.conf --status
--pidfile 用來顯式指定一個PID文件。PID文件存儲着關於searchd的進程信息,這些信息用於進程間通訊(例如indexer需要知道這個PID以便在輪換 索引的時候與searchd進行通訊)searchd在正常模式運行時會使用一個PID(即不是使用--console選項啟動的),但有可能存在 searchd在控制台(--console)模式運行,而同時正在索引正在進行更新和輪換操作的情況,此時就需要一個PID文件。 $ searchd --config /home/myuser/sphinx.conf --pidfile /home/myuser/sphinx.pid
--console 用來強制searchd以控制台模式啟動;典型情況下searchd像一個傳統的服務器應用程序那樣運行,它把信息輸出到(sphinx.conf配 置文件中指定的)日志文件中。但有些時候需要調試配置文件或者守護程序本身的問題,或者診斷一些很難跟蹤的問題,這時強制它把信息直接輸出到調用他的控制 台或者命令行上會使調試工作容易些。同時,以控制台模式運行還意味着進程不會fork(因此搜索操作都是串行執行的),也不會寫日志文件。(要特別注 意,searchd並不是被主要設計用來在控制台模式運行的)。可以這樣調用searchd: $ searchd --config /home/myuser/sphinx.conf --console
--iostats 當使用日志時(必須在sphinx.conf中啟用query_log選項)啟用--iostats會對每條查詢輸出關於查詢過程中發生的輸入輸出操作的詳細信息,會帶來輕微的性能代價,並且顯然會導致更大的日志文件。更多細節請參考 query log format 一節。可以這樣啟動searchd: $ searchd --config /home/myuser/sphinx.conf --iostats
--cpustats 使實際CPU時間報告(不光是實際度量時間(wall time))出現在查詢日志文件(每條查詢輸出一次)和狀態報告(累加之后)中。這個選項依賴clock_gettime()系統調用,因此可能在某些系 統上不可用。可以這樣啟動searchd: $ searchd --config /home/myuser/sphinx.conf --cpustats
--port portnumber (可簡寫為 -p) 指定searchd監聽的端口,通常用於調試。這個選項的默認值是9312,但有時用戶需要它運行在其他端口上。在這個命令行選項中指定端口比配置文件中 做的任何設置優先級都高。有效的端口范圍是0到65535,但要使用低於1024的端口號可能需要權限較高的賬戶。使用示例: $ searchd --port 9313
--index <index> 強制searchd只提供針對指定索引的搜索服務。跟上面的--port相同,這主要是用於調試,如果是長期使用,則應該寫在配置文件中。使用示例: $ searchd --index myindex
searchd在Windows平台上有一些特有的選項,與它做為windows服務所產生的額外處理有關,這些選項只存在於Windows二進制版本。
注意,在Windows上searchd默認以--console模式運行,除非用戶將它安裝成一個服務。
--install 將searchd安裝成一個微軟管理控制台(Microsoft Management Console, 控制面板 / 管理工具 / 服務)中的服務。 如果一條命令指定了--install,那么同時使用的其他所有選項,都會被保存下來,服務安裝好后,每次啟動都會調用這些命令。例如,調用 searchd時,我們很可能希望用--config指定要使用的配置文件,那么在使用--install的同時也要加入這個選項。一旦調用了這個選項, 用戶就可以在控制面板中的管理控制台中對searchd進行啟動、停止等操作,因此一切可以開始、停止和重啟服務的方法對searchd也都有效。示例: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
--config C:\Sphinx\sphinx.conf
如果每次啟動searchd你都希望得到I/O stat信息,那就應該把這個選項也用在調用--install的命令行里: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
--config C:\Sphinx\sphinx.conf --iostats
--delete 在微軟管理控制台(Microsoft Management Console)和其他服務注冊的地方刪除searchd,當然之前要已經通過--install安裝過searchd服務。注意,這個選項既不刪除軟件 本身,也不刪除任何索引文件。調用這個選項之后只是使軟件提供的服務不能從windows的服務系統中調用,也不能在機器重啟后自動啟動了。如果調用時 searchd正在做為服務運行中,那么現有的示例並不會被結束(一直會運行到機器重啟或調用--stop)。如果服務安裝時(用 --servicename)指定了自定義的名字,那在調用此選項卸載服務時里也需要用--servicename指定相同的名字。示例: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --delete
--servicename <name> 在安裝或卸載服務時指定服務的名字,這個名字會出現在管理控制台中。有一個默認的名字searchd,但若安裝服務的系統可能有多個管理員登錄,或同時運 行多個searchd實例,那么起一個描述性強的名字將是個好好主意。注意,只有在與--install或者--delete同時使用的時候 --servicename才有效,否則這個選項什么都不做。示例: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
--config C:\Sphinx\sphinx.conf --servicename SphinxSearch
--ntservice 在Windows平台,管理控制台將searchd做為服務調用時將這個選項傳遞給它。通常沒有必要直接調用這個開關,它是為Windows系統准備的, 當服務啟動時,系統把這個參數傳遞給searchd。然而理論上,你也可以用這個開關從命令行將searchd啟動成普通服務模式(與--console 代表的控制台模式相對)
--config C:\Sphinx\sphinx.conf
如果每次啟動searchd你都希望得到I/O stat信息,那就應該把這個選項也用在調用--install的命令行里: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
--config C:\Sphinx\sphinx.conf --iostats
--delete 在微軟管理控制台(Microsoft Management Console)和其他服務注冊的地方刪除searchd,當然之前要已經通過--install安裝過searchd服務。注意,這個選項既不刪除軟件 本身,也不刪除任何索引文件。調用這個選項之后只是使軟件提供的服務不能從windows的服務系統中調用,也不能在機器重啟后自動啟動了。如果調用時 searchd正在做為服務運行中,那么現有的示例並不會被結束(一直會運行到機器重啟或調用--stop)。如果服務安裝時(用 --servicename)指定了自定義的名字,那在調用此選項卸載服務時里也需要用--servicename指定相同的名字。示例: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --delete
--servicename <name> 在安裝或卸載服務時指定服務的名字,這個名字會出現在管理控制台中。有一個默認的名字searchd,但若安裝服務的系統可能有多個管理員登錄,或同時運 行多個searchd實例,那么起一個描述性強的名字將是個好好主意。注意,只有在與--install或者--delete同時使用的時候 --servicename才有效,否則這個選項什么都不做。示例: C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
--config C:\Sphinx\sphinx.conf --servicename SphinxSearch
--ntservice 在Windows平台,管理控制台將searchd做為服務調用時將這個選項傳遞給它。通常沒有必要直接調用這個開關,它是為Windows系統准備的, 當服務啟動時,系統把這個參數傳遞給searchd。然而理論上,你也可以用這個開關從命令行將searchd啟動成普通服務模式(與--console 代表的控制台模式相對)
最后但並非最不重要的,類似其他的守護進程(daemon),searchd多種信號。
SIGTERM進行一次平滑的重啟。新的請求不會被接受;但是已經開始的請求不會被強行中斷。
SIGHUP啟動索引輪詢。取決於
seamless_rotate 的設置,新的請求可能會在短期內陷入停頓;客戶端將接收到臨時錯誤。
SIGUSR1強制重新打開searchd日志和查詢日志,使得日志輪詢可以進行。