How to use Sphinx for full-text search in PHP development
Sphinx is a high-performance full-text search engine suitable for full-text search needs in various languages. For PHP development, Sphinx provides APIs and plug-ins for easy integration into existing PHP applications. In this article, we will explain how to use Sphinx for full-text search.
Sphinx installation is very simple, just run a few commands on your Linux system. The following are the steps to install Sphinx on Ubuntu system:
(1) Update the APT package list
sudo apt-get update
(2) Install Sphinx
sudo apt-get install sphinxsearch
(3) Start Sphinx service
sudo service sphinxsearch start
Sphinx’s configuration file is /etc/sphinxsearch/sphinx.conf. In this file we can define Sphinx’s global settings and indexes. The following is a sample configuration file for indexing data from MySQL into Sphinx:
source src1
{
type = mysql
sql_host = localhost
sql_user = username
sql_pass = password
sql_db = dbname
sql_port = 3306 # optional, default is 3306
sql_query =
SELECT id, title, content FROM article
sql_attr_uint = category_id
}
index my_index
{
source = src1
path = /var/lib/sphinxsearch/data/my_index
docinfo = extern
charset_type = utf-8
morphology = stem_en
min_prefix_len = 3
min_infix_len = 1
}
searchd
{
listen = 127.0.0.1:9312
log = /var /log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
max_matches = 1000
}
In this configuration file, we define a data source named src1, connect to the MySQL database, and define the fields to retrieve from it. Then, we defined an index named my_index to index the src1 source to the specified path. Finally, we define a searchd service that listens on port 9312 and turns on the query log.
Connecting to Sphinx in PHP is very easy. We can use Sphinx's PHP extension, which provides a set of functions to perform searches. The following is an example of PHP code to connect to Sphinx for full-text search:
//Connect to Sphinx
$cl = new SphinxClient();
$cl->setServer("localhost", 9312 );
//Search results
$keywords = "Sphinx";
$result = $cl->Query($keywords, "my_index");
/ /Output results
foreach ($result['matches'] as $doc => $match) {
echo "Document id={$doc}, weight={$match['weight']}, attr={$match'attrs'}
";
}
In this example, we first instantiate a SphinxClient object and specify the host and port of the Sphinx server. We then perform a search, specifying the query keywords to search for and the index names to search for. Finally, we loop through the results and output matching document IDs, weights, and attributes.
Summary
Sphinx is a powerful full-text search engine that can be easily integrated into PHP applications. By using Sphinx, we can quickly search large amounts of text documents and obtain highly efficient and accurate search results. We hope this article was helpful and gave you a better understanding of how to use Sphinx for full-text search in PHP development.
The above is the detailed content of How to use Sphinx for full-text search in PHP development. For more information, please follow other related articles on the PHP Chinese website!