Home >Backend Development >PHP Tutorial >Use PHP and coreseek to implement accurate image-driven search functions

Use PHP and coreseek to implement accurate image-driven search functions

WBOY
WBOYOriginal
2023-08-07 20:40:44669browse

Use PHP and coreseek to implement accurate image-driven search functions

Use PHP and coreseek to achieve accurate image-driven search function

With the rapid development of the Internet, image search function plays an increasingly important role in user experience and information retrieval. The more important the role. This article will introduce how to use PHP and coreseek to implement accurate image-driven search functions to help users quickly find the images they need.

  1. Installing coreseek
    First, we need to install coreseek - an open source search server software developed based on Sphinx. It can be installed through the following command:
$ wget http://sphinxsearch.com/files/sphinx-2.2.11-release.tar.gz
$ tar -xzf sphinx-2.2.11-release.tar.gz
$ cd sphinx-2.2.11-release
$ ./configure --prefix=/usr/local/coreseek
$ make && make install

After installing coreseek, we need to configure indexing and search for it.

  1. Configuration Index
    In the coreseek installation directory, create a folder named /usr/local/coreseek/etc to store the core configuration files. Create a file named Pictures.conf under this folder to configure the index for picture search:
source src1
{
    type = mysql
    sql_host = localhost
    sql_user = root
    sql_pass = your_p@ssword
    sql_db = your_database_name
    sql_port = 3306
}

index img_index
{
    type = rt
    rt_mem_limit = 1024M
    path = /usr/local/coreseek/var/data/img_index
    morphology = stem_en
    min_word_len = 1
    charset_dictpath = /usr/local/coreseek/var/data/dict
    charset_type = zh_cn.utf-8
    charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
    rt_field = description
    rt_attr_uint = categoryId
    rt_attr_uint = uploaderId
    rt_attr_timestamp = uploadTime
}

indexer
{
    mem_limit = 256M
}

searchd
{
    listen = 9312
    log = /usr/local/coreseek/var/log/searchd.log
    query_log = /usr/local/coreseek/var/log/query.log
    read_timeout = 5
    max_children = 30
    pid_file = /usr/local/coreseek/var/log/searchd.pid
    max_matches = 1000
}

in the Pictures.conf file , we set the data source to be the MySQL database, the user is root, the password is your_p@ssword, and the database is your_database_name. At the same time, we configured parameters such as index name, index file storage path, and word separator.

  1. Create PHP script
    Next, we will write a PHP script to implement the image search function. Create a file called image_search.php and add the following code:
<?php
require_once('sphinxapi.php');
$sphinx = new SphinxClient();
$sphinx->SetServer('localhost', 9312);
$sphinx->SetConnectTimeout(3);
$sphinx->SetArrayResult(true);

$keyword = $_GET['keyword']; // 获取用户输入的关键词

$sphinx->SetMatchMode(SPH_MATCH_EXTENDED); // 使用扩展模式
$sphinx->SetSortMode(SPH_SORT_ATTR_ASC, 'uploadTime'); // 根据上传时间排序
$sphinx->SetLimits(0, 10); // 每页显示10条结果

$queryResult = $sphinx->Query($keyword, 'img_index'); // 查询结果

$ids = array();
if ($queryResult && isset($queryResult['matches'])) {
    foreach ($queryResult['matches'] as $match) {
        $ids[] = $match['id'];
    }
}

// 根据搜索结果获取对应的图片信息,并进行展示
if (!empty($ids)) {
    $db = new PDO("mysql:host=localhost;dbname=your_database_name", "root", "your_p@ssword");
    $stmt = $db->prepare("SELECT * FROM images WHERE id IN (".implode(',', $ids).")");
    $stmt->execute();
    $images = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($images as $image) {
        echo '<img src="'.$image['url'].'" alt="'.$image['description'].'">';
    }
} else {
    echo '没有找到相关图片';
}

In the above code, we have used Sphinx’s PHP client library sphinxapi.php , and called relevant search and query methods in the script. The keywords entered by the user are obtained through GET, and then searched using Sphinx's Query method. Finally, the corresponding images are displayed on the web page based on the search results.

  1. Run and test
    Save the above code to the web root directory of the server and access it in the browserhttp://localhost/image_search.php?keyword=xxx, where keyword is the keyword entered by the user. If everything is configured correctly, you can see the images that meet the conditions displayed on the page.

Through the above simple steps, we have successfully implemented the precise image-driven search function using PHP and coreseek. Users can easily enter keywords and quickly find the pictures they need. At the same time, through the core configuration files and code examples, you can further optimize and expand according to actual needs to meet business needs.

The above is the detailed content of Use PHP and coreseek to implement accurate image-driven search functions. 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