sphinx的简单实例

sphinx.conf中的配置:

 1 source indexLocation

 2 {

 3     type            = mysql

 4 

 5     sql_host        = 192.168.1.113

 6     sql_user        = root

 7     sql_pass        = redidai@@2013

 8     sql_db            = redidai

 9     sql_port        = 3306    # optional, default is 3306

10     

11     sql_query_pre = SET NAMES utf8

12     sql_query_pre = SET SESSION query_cache_type=OFF

13     

14     sql_query        = \

15         SELECT a.location_id as id,a.location_id,a.location_name as `location_name`,a.location_name as `name`,a.location_bname,a.attach_id,a.showstatus,a.is_del,a.status,b.area_name as city_name FROM `ts_rdd_location` a LEFT JOIN `ts_rdd_area` b ON a.city_id = b.area_id

16     #sql_attr_string =  name

17     sql_attr_uint        = status

18     #sql_attr_timestamp    = date_added

19     sql_query_info        = SELECT * FROM `ts_rdd_location`  WHERE location_id = $id

20 }

21 

22 

23 index indexLocation

24 {

25     source            = indexLocation

26     path            = /var/lib/sphinx/test1

27     docinfo            = extern

28     mlock          = 0                       #缓存数据内存锁定

29     morphology     = none                    #形态学(对中文无效)

30     min_word_len   = 2                       #索引的词最小长度

31     charset_type   = utf-8

32     min_prefix_len = 0                       #最小前缀

33     html_strip     = 1

34     ngram_len      = 1                       #对于非字母型数据的长度切割

35     ngram_chars    = U+3000..U+2FA1F         #则会对每个中文,英文字词进行分割,速度会慢

36 

37     #字符表,注意:如使用这种方式,则sphinx会对中文进行单字切分,即进行字索引。

38     #若要使用中文分词,必须使用其他分词插件如 coreseek,sfc

39     charset_table  = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F

40 }

41 

42 

43 

44 

45 indexer

46 {

47     mem_limit        = 32M

48 }

49 

50 

51 searchd

52 {

53     listen                  = 9312

54     #listen            = 9306:mysql41

55     log            = /var/log/sphinx/searchd.log

56     query_log        = /var/log/sphinx/query.log

57     read_timeout        = 5

58     max_children        = 30

59     pid_file        = /var/run/sphinx/searchd.pid

60     max_matches        = 1000

61     seamless_rotate        = 1

62     preopen_indexes        = 1

63     unlink_old        = 1

64     compat_sphinxql_magics = 0

65     #workers            = threads # for RT to work

66     binlog_path        = /var/lib/sphinx

67 }

php代码:

 1 <?php

 2 class SearchAction extends AdministratorAction {

 3 

 4     public $sphinxClient = null;

 5 

 6     public function __construct() {

 7         parent::__construct();

 8 

 9         require_once SITE_PATH . '/sphinxapi.php';

10 

11         if ($this->sphinxClient == null) {

12             $this->sphinxClient = new SphinxClient ();

13         }

14 

15         $this->sphinxClient->SetServer('192.168.0.0', 9312);

16         $this->sphinxClient->open();

17     }

18 

19     public function QLocation($params = array()) {

20         $searchWord = '';

21         

22         if (isset($params['keyword'])) {

23             $searchWord = $params['keyword'];

24         }

25         

26         $result = $this->suggestHandle($this->sphinxClient, $searchWord);

27 

28         $nodeResult = array();

29 

30         if ($result['total'] > 0) {

31             $matches = array();

32             

33             foreach($result['matches'] as $mvale) {

34                 $matches[] = $mvale['id'];

35             }

36             

37             $matches_id = implode(",", $matches);

38             

39             $locationModel = D('RddLocation', 'admin');

40             $list = $locationModel->getLocationListByID($matches_id);

41             $nodeResult = $list;

42         }

43         

44         print_r($nodeResult);exit;

45 

46         return $nodeResult;

47     }

48 

49     public function suggestHandle($spx, $searchWord = ''){

50         //$spx->SetSortMode(SPH_SORT_EXTENDED, "@weight DESC, larea DESC, is_recommend DESC, like_count DESC");

51         $spx->SetSortMode(SPH_SORT_EXTENDED, "@weight DESC");

52         $spx->ResetFilters();

53         //$cityId = filter_input(INPUT_GET, 'area', FILTER_SANITIZE_STRING);

54         //$spx->SetFilter('showstatus', array('Y'));

55         //$spx->SetFilter('is_del', array('0'));

56         $spx->SetFilter('status', array(1));

57         //$result = $spx->Query($searchWord, 'plan14_location,delta_plan14_location');

58         $spx->SetArrayResult(true);

59         $result = $spx->Query($searchWord, 'indexLocation');

60         //var_dump($spx);

61         return $result;

62     }

63 

64 }

调用:

$searchAction = new SearchAction();

        $list = $searchAction->QLocation(array('keyword' => $name));

 

你可能感兴趣的:(sphinx)