sphinx系列之用python和django調用你的sphinx(五)

來源:互聯網
上載者:User

Sphinx官方內建的api有 PHP, Python, Java, Ruby, and pure C,還有其它開源的api如下:

  • Perl API port, Sphinx::Search, by Jon Schutz
  • C++ API port, C++ Sphinx client, by Seznam.cz
  • Haskell API port, Haskell Sphinx client, by Tupil
  • C# API port, C# .NET client, by Christopher Gooley

 Sphinx的api檔案放在下載的源檔案的api目錄下,進入該目錄看到有如下檔案: cd /usr/local/src/sphinx-0.99/api/

drwxr-xr-x 2 chenzehe chenzehe  4096 2009-12-02 java
drwxr-xr-x 2 chenzehe chenzehe  4096 2009-12-02 libsphinxclient
drwxr-xr-x 5 chenzehe chenzehe  4096 2009-12-02 ruby
-rw-r--r-- 1 chenzehe chenzehe 44399 2009-11-07 sphinxapi.php
-rw-r--r-- 1 chenzehe chenzehe 26251 2009-11-07 sphinxapi.py
-rw-r--r-- 1 chenzehe chenzehe  1053 2007-11-16 test2.php
-rw-r--r-- 1 chenzehe chenzehe   579 2006-11-23 test2.py
-rw-r--r-- 1 chenzehe chenzehe  5656 2009-11-07 test.php
-rw-r--r-- 1 chenzehe chenzehe  3331 2009-11-07 test.py

其中sphinxapi.py就是python的api,test.py和test2.py是該api的測試執行個體。

 

啟動searchd守護進程:

進入sphinx的安裝目錄的bin檔案夾下,看到有如下檔案:

[root@localhost bin]# ls -l /usr/local/coreseek/bin/
總計 25436
-rwxr-xr-x 1 root root 5144646 11-14 15:14 indexer
-rwxr-xr-x 1 root root 4971942 11-14 15:14 indextool
-rwxr-xr-x 1 root root 5032457 11-14 15:14 search
-rwxr-xr-x 1 root root 5883521 11-14 15:14 searchd
-rwxr-xr-x 1 root root 4920843 11-14 15:14 spelldump

這裡是由於安裝了中文分片語件coreseek,所以安裝目錄就放在了coreseek下了,要是沒安裝該組件,這些的的安裝也是在sphinx的安裝目錄下的bin檔案中,

其中:

indexer是建立索引的工具;

search為一個簡單的命令列(CLI) 的測試程式,用於測試全文索引;

searchd: 一個守護進程,其他軟體可以通過這個守護進程進行全文檢索索引;

spelldump: 一個簡單的命令列工具,用於從 ispellMySpell (OpenOffice內建綁定) 格式的字典中提取詞條。當使用 wordforms 時可用這些詞條對索引進行定製;

indextool: 工具程式,用來轉儲關於索引的多項調試資訊。 此工具是從版本Coreseek 3.1(Sphinx 0.9.9-rc2)開始加入的 ;

 

由上面可知只有啟動searchd進程,才能讓應用程式進行搜尋,運行一下該檔案即可啟動該進程,如下:

[root@localhost bin]#/usr/local/coreseek/bin/searchd    #啟動searchd進程
[root@localhost bin]# ps  #查看searchd進程
  PID TTY          TIME CMD
 4388 pts/1    00:00:00 bash
 6306 pts/1    00:00:00 mysqld_safe
15692 pts/1    00:00:00 searchd
16139 pts/1    00:00:00 ps

 

此時searchd的進程已啟動了,下面運行一下test.py測試檔案看一下運行效果:

[root@localhost bin]# python /usr/local/src/sphinx-0.9.9/api/test.py test    #test為搜尋的關鍵字
Query 'test ' retrieved 3 of 3 matches in 0.004 sec
Query stats:
        'test' found 10 times in 6 documents

Matches:
1. doc_id=1, weight=101, group_id=1, date_added=2010-11-14 16:36:36
2. doc_id=2, weight=101, group_id=1, date_added=2010-11-14 16:36:36
3. doc_id=4, weight=1, group_id=2, date_added=2010-11-14 16:36:36

也可以在eclipse中運行該測試,開啟eclipse,建立一個python項目,把sphinx.py、test.py、test2.py拷到該項目的目錄下,設定一下test.py運行時的參數為test即可,點中test.py->右鍵->Run As->Run Configuration->Arguments,在裡面輸入運行時參數test,運行就能輸出跟上面一樣的結果了。

 

Django調用Sphinx要用到django-sphinx,該項目地址為https://github.com/dcramer/django-sphinx,官方介紹如下:

This is a layer that functions much like the Django ORM does except it works on top of the Sphinx full-text search engine.

Please Note: You will need to create your own sphinx indexes and install sphinx on your server to use this app.

 從http://pypi.python.org/pypi/django-sphinx/ 上下載下來進行安裝:

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.