Home  >  Article  >  Backend Development  >  How to use Sphinx for full-text search in PHP development

How to use Sphinx for full-text search in PHP development

WBOY
WBOYOriginal
2023-06-25 09:09:271485browse

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.

  1. Installing Sphinx

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

  1. Configure Sphinx

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.

  1. Connecting to Sphinx using PHP

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn