1. 创建索引
$ sudo /usr/local/bin/indexer --config /usr/local/etc/sphinx.conf --all Sphinx 0.9.7 Copyright (c) 2001-2007, Andrew Aksyonoff using config file '/usr/local/etc/sphinx.conf'... indexing index 'catalog'... collected 8 docs, 0.0 MB sorted 0.0 Mhits, 82.8% done total 8 docs, 149 bytes total 0.010 sec, 14900.00 bytes/sec, 800.00 docs/sec
2. search 测试索引
$ /usr/local/bin/search --config /usr/local/etc/sphinx.conf ENG Sphinx 0.9.7 Copyright (c) 2001-2007, Andrew Aksyonoff index 'catalog': query 'ENG ': returned 2 matches of 2 total in 0.000 sec displaying matches: 1. document=8, weight=1, assembly=5, model=7 id=8 partno=ENG088 descrīption=Cylinder head price=55 2. document=9, weight=1, assembly=5, model=3 id=9 partno=ENG976 descrīption=Large cylinder head price=65 words: 1. 'eng': 2 documents, 2 hits $ /usr/local/bin/search --config /usr/local/etc/sphinx.conf wind Sphinx 0.9.7 Copyright (c) 2001-2007, Andrew Aksyonoff index 'catalog': query 'wind ': returned 2 matches of 2 total in 0.000 sec displaying matches: 1. document=1, weight=1, assembly=3, model=1 id=1 partno=WIN408 descrīption=Portal window price=423 2. document=5, weight=1, assembly=3, model=1 id=5 partno=WIN958 descrīption=Windshield, front price=500 words: 1. 'wind': 2 documents, 2 hits $ /usr/local/bin/search / --config /usr/local/etc/sphinx.conf --filter model 3 ENG Sphinx 0.9.7 Copyright (c) 2001-2007, Andrew Aksyonoff index 'catalog': query 'ENG ': returned 1 matches of 1 total in 0.000 sec displaying matches: 1. document=9, weight=1, assembly=5, model=3 id=9 partno=ENG976 descrīption=Large cylinder head price=65 words: 1. 'eng': 2 documents, 2 hits
PHP调用Sphinx搜索引擎
<?php include('sphinx-0.9.7/api/sphinxapi.php'); $cl = new SphinxClient(); $cl->SetServer( "localhost", 3312 ); $cl->SetMatchMode( SPH_MATCH_ANY ); $cl->SetFilter( 'model', array( 3 ) ); $result = $cl->Query( 'cylinder', 'catalog' ); if ( $result === false ) { echo "Query failed: " . $cl->GetLastError() . "./n"; } else { if ( $cl->GetLastWarning() ) { echo "WARNING: " . $cl->GetLastWarning() . ""; } if ( ! empty($result["matches"]) ) { foreach ( $result["matches"] as $doc => $docinfo ) { echo "$doc/n"; } print_r( $result ); } } exit; ?>
测试代码,需要为 Sphinx 创建 log 目录,启动 searchd,然后运行 PHP 应用程序
PHP 应用程序
$ sudo mkdir -p /var/log/searchd
$ sudo /usr/local/bin/searchd --config /usr/local/etc/sphinx.conf
$ php search.php
9
Array (
[fields] => Array (
[0] => partno
[1] => descrīption
)
[attrs] => Array(
[assembly] => 1
[model] => 1
)
[matches] => Array(
[9] => Array(
[weight] => 1
[attrs] => Array(
[assembly] => 5
[model] => 3
)
)
)
[total] => 1
[total_found] => 1
[time] => 0.000
[words] => Array(
[cylind] => Array(
[docs] => 2
[hits] => 2
)
)
)