PHP와 coreseek를 사용하여 정확한 이미지 기반 검색 기능 구현
인터넷의 급속한 발전과 함께 이미지 검색 기능은 사용자 경험과 정보 검색에 있어 점점 더 중요한 역할을 하고 있습니다. 이 기사에서는 사용자가 필요한 이미지를 빠르게 찾을 수 있도록 PHP와 coreseek를 사용하여 정확한 이미지 기반 검색 기능을 구현하는 방법을 소개합니다.
$ 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
coreseek를 설치한 후 인덱싱을 구성하고 검색해야 합니다.
/usr/local/coreseek/etc
라는 폴더를 생성하여 핵심 구성 파일을 저장합니다. 이미지 검색을 위한 색인을 구성하려면 이 폴더 아래에 Pictures.conf
라는 파일을 만듭니다. /usr/local/coreseek/etc
的文件夹,用于存放核心配置文件。在该文件夹下创建一个名为图片.conf
的文件,用于配置图片搜索的索引: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 }
在图片.conf
文件中,我们设置了数据源为MySQL数据库,用户为root,密码为your_p@ssword,数据库为your_database_name。同时,我们配置了索引名称、索引文件存放路径、分词器等参数。
image_search.php
的文件,添加以下代码:<?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 '没有找到相关图片'; }
在以上代码中,我们使用了Sphinx的PHP客户端库sphinxapi.php
,并在脚本中调用了相关的搜索和查询方法。用户输入的关键词通过GET方式获取,然后使用Sphinx的Query方法进行搜索。最后,根据搜索结果在网页中展示对应的图片。
http://localhost/image_search.php?keyword=xxx
,其中keyword
Pictures.conf
파일에서 데이터 소스는 MySQL로 설정합니다. 데이터베이스, 사용자는 루트, 비밀번호는 your_p@ssword, 데이터베이스는 your_database_name입니다. 동시에 인덱스 이름, 인덱스 파일 저장 경로, 단어 구분 기호 등의 매개 변수를 구성했습니다.
image_search.php
라는 파일을 생성하고 다음 코드를 추가합니다: 🎜🎜rrreee🎜위 코드에서는 Sphinx의 PHP 클라이언트 라이브러리인 sphinxapi.php
를 사용했으며 관련 검색어를 쿼리 메서드는 스크립트에서 호출됩니다. 사용자가 입력한 키워드를 GET을 통해 얻은 후, Sphinx의 Query 메소드를 이용하여 검색합니다. 마지막으로, 검색 결과에 따라 해당 이미지가 웹 페이지에 표시됩니다. 🎜http://localhost/image_search.php?keyword=xxx를 방문하세요. >, 여기서 <code>keyword
는 사용자가 입력한 키워드입니다. 모든 것이 올바르게 구성되면 페이지에 표시된 조건에 맞는 이미지를 볼 수 있습니다. 🎜🎜🎜위의 간단한 단계를 통해 PHP와 coreseek를 사용하여 정밀한 이미지 기반 검색 기능을 성공적으로 구현했습니다. 사용자는 쉽게 키워드를 입력하고 필요한 사진을 빠르게 찾을 수 있습니다. 동시에 핵심 구성 파일과 코드 예제를 통해 비즈니스 요구 사항을 충족하기 위해 실제 요구 사항에 따라 더욱 최적화하고 확장할 수 있습니다. 🎜
위 내용은 PHP 및 coreseek를 사용하여 정확한 이미지 기반 검색 기능 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!