語句分析:python
SHOW STATUS; 顯示一些頗有用的性能計數器。僅當 searchd 啓動時帶有 --iostats 和 --cpustats 開關時,IO和CPU計數器才分別可用。ios
SHOW META; 顯示關於上一條查詢的一些額外的元信息(meta-information),好比查詢時間和關於關鍵詞的統計信息:sql
查詢工具分析:shell
indexer 命令參考服務器
indexer 是Sphinx的兩個關鍵工具之一。不論是從命令行直接調用,仍是做爲一個較大的腳本的一部分使用, indexer 都只負責一件事情——收集要被檢索的數據。
indexer 的調用語法基本上是這樣:
indexer [OPTIONS] [indexname1 [indexname2 [...]]]
用戶能夠在 sphinx.conf 中設置好可能有哪些索引(index)(這些索引能夠在晚些時候別搜索),所以在調用 indexer 的時候,最簡單的狀況下,只須要告訴它你要簡歷哪一個(或者哪些)
索引就好了。
假設 sphinx.conf 包含了兩個索引的具體設置, mybigindex 和 mysmallindex , ,你能夠這麼調用:less
$ indexer mybigindex
$ indexer mysmallindex mybigindex
在配置文件 sphinx.conf 裏面,用戶能夠爲他們的數據指定一個或多個索引。而後調用 indexer 來對其中一個特定的索引進行從新編制索引操做,或者是從新編制全部索引——不限於某一個或同時所有,用戶老是能夠指定現有索引的一個組合。 indexer 的大部分選項均可以在配置文件中給出,然而有一部分選項還須要在命令行上指定,這
些選項影響編制索引這一操做是如何進行的。這些選項列舉以下:工具
- --config <file> (簡寫爲 -c <file> ) 使 indexer 將指定的文件file做爲配置文件。 一般, indexer 是會在安裝目錄(例如e.g. /usr/local/sphinx/etc/sphinx.conf ,若是sphinx
被安裝在 /usr/local/sphinx )中尋找 sphinx.conf ,若找不到,則繼續在用戶在shell中調用 indexer 時所在的目錄中尋找。 這個選項通常在共享sphinx安裝的狀況下使用,好比二進制文件安裝在 /usr/local/sphinx ,而不一樣用戶都有權定製本身的sphinx設置。或者在同一個服務器上運行多個實例的狀況下使用。在上述兩中狀況中,用戶能夠建立本身的sphinx.conf 文件,而後把它作爲參數傳給indexer。例如:
$ indexer --config /home/myuser/sphinx.conf myindex
- --all 使 indexer 對 sphinx.conf 文件中列出的全部索引進行從新編制索引,這樣就不比一次列出每一個索引的名字了。這個選項在配置文件較小的狀況下,或者在相似基於 cron 的維護工做中頗有用。在上述狀況中,整個索引集天天或每週或別的什麼合適的時間間隔中就從新創建一次。用法示例:
$ indexer --config /home/myuser/sphinx.conf --all
- --rotate 用於輪換索引。對新的文檔創建索引時幾乎確定都確保搜索服務仍然可用,除非你有信心在搜索服務中止同時不給你的用戶帶來困擾。 --rotate 創建一個額外的索引,並列於原有索引(與原有索引在相同目錄,簡單地在原有索引文件名基礎上加一個 .new後綴)。一旦這個額外的索引創建完成, indexer 給 searchd 發一個SIGHUP信號作爲通知。 searchd 會嘗試將索引從新命名(給原有索引加上 .old 後綴,而把帶有 .new 後綴的新索引改成原名,以達替換之目的),繼而用新的文件重啓服務。依 seamless_rotate 選項設定之不一樣,在新索引可用以前可能有一點小的延遲。用法示例:
- --quiet 使 indexer 不輸出除錯誤(error)外的任何東西。這個選項仍然拽可用在 cron 定時任務的情境下或者腳本中,這些狀況下大部分輸出是可有可無或徹底沒用的,除非是發生了某些種類的錯誤。用法示例:
$ indexer --rotate --all --quiet
- --noprogress 不隨時顯示進度信息,而是僅在索引結束時報告最終的狀態細節(例如爲哪些文檔創建了索引,創建索引的速度等)。當腳本沒有運行在一個控制檯(console,
或「tty」)時,這個選項是默認的。用法示例:
$ indexer --rotate --all --noprogress
- --buildstops <outputfile.text> <N> 像創建索引同樣掃描索引對應的數據源,產生一個最終會被加入索引的詞項的列表。換種說法,產生一個用這個索引能夠檢索的詞項的列表。注意,這個選項使indexer並不真正更新指定的索引,而只是「僞裝」建在立索引似地處理一遍數據,包括運行 sql_query_pre 或者 sql_query_post 選項指定的查
詢。 outputfile.txt 文件最終會包含一個詞表,每行一個詞,按詞頻排序,高頻在前。參數N指定了列表中最多可出現的詞項數目,若是N比索引中所有詞項的數目還大,則返回的詞項數就是所有詞項數。客戶端應用程序利用這種字典式的詞表來提供「您是要搜索。。。嗎?(Did you mean...)」的功能,一般這個選項與下面要講的 --buildfreqs 選項一同使用。示例:
$ indexer myindex --buildstops word_freq.txt 1000
這條命令在當前目錄產生一個 word_freq.txt 文件,內含myindex這個索引中最經常使用的1000個詞,且最經常使用的排在最前面。注意,當指定了多個索引名或使用了 --all 選項(至關於列出配置文件中的全部索引名)時,這個選項對其中的最後一個索引發做用。
- --buildfreqs 與 --buildstops 一同使用 (若是沒有指定 --buildstops 則 --buildfreqs 也被忽略). 它給 --buildstops 產生的詞表的每項增長一個計數信息,即該詞在索引中共出現了多少次,這在創建停用詞(stop words,出現特別廣泛的詞)表時可能有用。在開發「您是要搜索。。。嗎?(Did you mean...)」的功能時這個選項也能幫上忙,由於有
了它你就能知道一個詞比另外一個相近的詞出現得更頻繁的程度。示例:
$ indexer myindex --buildstops word_freq.txt 1000 --buildfreqs
這個命令將產生一個相似於上一條命令的 word_freq.txt ,但不一樣在於,每一個詞的後面都會附加一個數字,指明在指定的索引中這個詞出現了多少次。
- --merge <dst-index> <src-index> 用於在物理上將多個索引合併,比方說你在使用「主索引+增量索引」模式,主索引不多改變,但增量索引很頻繁地重建,而 --merge 選項容許將這兩個索引合而爲一。操做是從右向左進行的,即先考察 src-index 的內容,而後在物理上將之與 dst-index 合併,最後結果留在 dst-index 裏。用僞代碼說就是 dst-index += src-index 。示例:
$ indexer --merge main delta --rotate
上例中main是主索引,不多更動,delta是增量索引,頻繁更新。上述命令調用 indexer 將delta的內容合併到main裏面而且對索引進行輪換。
- --merge-dst-range <attr> <min> <max> 在合併索引的時候運行範圍過濾。具體地說,向目標索引 (是 --merge 的一個參數,若是沒有指定 --merge , 則 --merge-dst-range 也被忽略)合併時, indexer 會對將要合併進去的文檔作一次過濾,只有經過過濾才能最終出如今目標索引中。舉一個實用的例子,假設某個索引有一個「已刪除(deleted)」屬性,0表明「還沒有刪除」。這樣一個索引能夠用以下命令進行合併:
$ indexer --merge main delta --merge-dst-range deleted 0 0
這樣標記爲已刪除的文檔(值爲1)就不會出如今新生成的目標索引中了。這個選項能夠在命令行上指定屢次,以便指定多個相繼的過濾,這樣一個文檔要想合併到最終的目標索引中去,就必須依次經過所有這些過濾。
searchd 下篇更新post