Implement Real-Time Search and Automatic Index Updating with PHP and Xunsearch

This article demonstrates how to set up Xunsearch, a C++-based full-text search engine, and integrate it with PHP to achieve real-time search capabilities and automatically update the index, covering environment preparation, installation, sample code for searching, and index maintenance.

php Courses
php Courses
php Courses
Implement Real-Time Search and Automatic Index Updating with PHP and Xunsearch

When developing a website or application, search functionality is essential, and traditional database searches often lack the efficiency required for real-time results. Xunsearch, a C++‑based full‑text search engine supporting Chinese segmentation, can be used with PHP to provide fast, real‑time search and automatic index updates.

1. Environment Preparation

Before starting, ensure you have a PHP environment (version 5.4 or higher) and a Xunsearch server downloaded from the official site.

2. Install Xunsearch

Unzip the downloaded Xunsearch server package and run ./xunsearchd inside the server directory to start the Xunsearch daemon.

3. Index and Search Example

Create a PHP file named search.php and include the Xunsearch library: require_once '/path/to/sdk/php/lib/XS.php'; Instantiate the Xunsearch object and specify the index configuration: $xs = new XS('/path/to/xunsearch/app.ini'); Set up the search object, enable fuzzy search, limit results, configure segmentation, and assign field weights:

$search = $xs->search;
$search->setFuzzy();
$search->setLimit(10);
$search->setScwsMulti(3);
$search->addWeight('title', 10);
$search->addWeight('content', 5);

Perform the search using a keyword from the query string and iterate over the results:

$keyword = $_GET['q'];
$result = $search->search($keyword);
foreach ($result as $item) {
    echo $item->title . '<br>';
    echo $item->content . '<br><br>';
}

4. Automatic Index Updating

Create a PHP file named update.php, include the Xunsearch library, and instantiate the Xunsearch object:

require_once '/path/to/sdk/php/lib/XS.php';
$xs = new XS('/path/to/xunsearch/app.ini');

Obtain the index object and fetch data that needs to be indexed (example uses a MySQL database):

$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare('SELECT * FROM articles');
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

Loop through the data, create an XSDocument for each record, and update the index:

foreach ($data as $item) {
    $doc = new XSDocument();
    $doc->setFields($item);
    $index->update($doc);
}
$index->flushIndex();

Conclusion

The guide shows how to leverage PHP and Xunsearch to add efficient real‑time search to a website or application and how to keep the search index up‑to‑date automatically, ensuring that users always receive the latest results.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

indexingBackend DevelopmentPHPFull‑Text Searchreal-time searchXunSearch
php Courses
Written by

php Courses

php中文网's platform for the latest courses and technical articles, helping PHP learners advance quickly.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.