Sphinx High-Performance Full-Text Index PHP Development Guide
1. Foreword
Full-text search is one of the very important functions in today's network applications. Sphinx is a powerful full-text search engine that can help us achieve high-performance full-text search functions. This article will introduce how to use PHP to develop Sphinx and give detailed code examples.
2. Introduction to Sphinx
Sphinx is an open source full-text search engine that supports multiple platforms and programming languages and has extremely high performance.
First, we need to download the latest version from the official website of Sphinx (http://www.sphinxsearch.com/) and follow the documentation Install.
Sphinx uses indexes for full-text search, we need to create indexes and import data. The following is an example index configuration file (sphinx.conf):
source src1 { type = mysql sql_host = localhost sql_user = root sql_pass = password sql_db = dbname sql_port = 3306 sql_query = SELECT id, title, content FROM mytable } index myindex { source = src1 path = /path/to/your/index charset_type= utf-8 } searchd { listen = 9306:mysql41 log = /path/to/your/log query_log = /path/to/your/query/log }
The configuration file defines information about the data source, index, and search daemon. It needs to be modified according to the actual situation.
After creating the index, we also need to import data into the index. Sphinx provides command line tools to achieve this functionality. The following is an example:
indexer --config /path/to/your/sphinx.conf --all --rotate
This command will import data into the index based on the index information defined in the configuration file.
3. Use PHP for Sphinx development
The following will introduce how to use PHP to develop Sphinx and give specific code examples.
First, we need to install the Sphinx PHP extension. It can be easily installed through PECL:
pecl install sphinx
Before using Sphinx search, we need to connect to the Sphinx server first. The following is an example:
$host = 'localhost'; $port = 9306; $index = 'myindex'; $sphinx = new SphinxClient(); $sphinx->setServer($host, $port); $sphinx->setConnectTimeout(1); $sphinx->setMatchMode(SPH_MATCH_EXTENDED2);
Through the SphinxClient class we can easily connect to the Sphinx server and set the relevant parameters of the connection.
Once connected to the Sphinx server, we can start full-text search. The following is a sample code:
$keyword = 'PHP Sphinx'; $sphinx->setFilter('category', [1, 2, 3]); // 设置过滤条件 $sphinx->setSortMode(SPH_SORT_RELEVANCE); // 设置排序方式 $sphinx->setMaxQueryTime(1000); // 设置最大查询时间 $result = $sphinx->query($keyword, $index); // 发起搜索请求 if ($result === false) { echo '搜索失败:' . $sphinx->getLastError(); } else { echo '搜索成功!共找到' . $result['total'] . '条结果。'; foreach ($result['matches'] as $id => $match) { echo 'ID:' . $id . ',相关度:' . $match['weight']; } }
Through the setFilter method, we can set filter conditions, the setSortMode method is used to set the sorting method, and the setMaxQueryTime method can set the maximum query time. Finally, call the query method to initiate a search request.
4. Summary
Through the above introduction, we have learned how to use PHP to develop Sphinx and given specific code examples. As a high-performance full-text search engine, Sphinx can help us achieve fast and accurate full-text search functions. In actual applications, we can flexibly configure and develop according to specific needs. Hope this article helps you!
The above is the detailed content of PHP Development Guide for Sphinx High-Performance Full-Text Indexing. For more information, please follow other related articles on the PHP Chinese website!