search
Homephp教程php手册sphinx中文全文检索的实现
sphinx中文全文检索的实现Jun 13, 2016 am 09:36 AM
sphinxChineseFull Text Searchaccomplish

首先以下是配置文件:

source cv{
type=mysql
sql_host=localhost
sql_user=root
sql_pass=passwod
sql_db=database
sql_query_pre= SET NAMES utf8
sql_query=\
SELECT id, title, introtext,unix_timestamp(created) as addtime \
FROM jos_content
sql_attr_timestamp=addtime
sql_ranged_throttle=0
}
index cv{
source=cv
path=/usr/local/sphinx/var/data/joomlainx
docinfo=extern
mlock=0
stopwords=
min_prefix_len=0
min_infix_len=0
min_word_len=2
charset_type=utf-8
charset_table=U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z,\
A..Z->a..z, a..z, U+0149, U+017F, U+0138, U+00DF, U+00FF, U+00C0..U+00D6->U+00E0..U+00F6,\
U+00E0..U+00F6, U+00D8..U+00DE->U+00F8..U+00FE, U+00F8..U+00FE, U+0100->U+0101, U+0101,\
U+0102->U+0103, U+0103, U+0104->U+0105, U+0105, U+0106->U+0107, U+0107, U+0108->U+0109,\
U+0109, U+010A->U+010B, U+010B, U+010C->U+010D, U+010D, U+010E->U+010F, U+010F,\
U+0110->U+0111, U+0111, U+0112->U+0113, U+0113, U+0114->U+0115, U+0115, U+0116->U+0117,\
U+0117, U+0118->U+0119, U+0119, U+011A->U+011B, U+011B, U+011C->U+011D, U+011D,\
U+011E->U+011F, U+011F, U+0130->U+0131, U+0131, U+0132->U+0133, U+0133, U+0134->U+0135,\
U+0135, U+0136->U+0137, U+0137, U+0139->U+013A, U+013A, U+013B->U+013C, U+013C,\
U+013D->U+013E, U+013E, U+013F->U+0140, U+0140, U+0141->U+0142, U+0142, U+0143->U+0144,\
U+0144, U+0145->U+0146, U+0146, U+0147->U+0148, U+0148, U+014A->U+014B, U+014B,\
U+014C->U+014D, U+014D, U+014E->U+014F, U+014F, U+0150->U+0151, U+0151, U+0152->U+0153,\
U+0153, U+0154->U+0155, U+0155, U+0156->U+0157, U+0157, U+0158->U+0159, U+0159,\
U+015A->U+015B, U+015B, U+015C->U+015D, U+015D, U+015E->U+015F, U+015F, U+0160->U+0161,\
U+0161, U+0162->U+0163, U+0163, U+0164->U+0165, U+0165, U+0166->U+0167, U+0167,\
U+0168->U+0169, U+0169, U+016A->U+016B, U+016B, U+016C->U+016D, U+016D, U+016E->U+016F,\
U+016F, U+0170->U+0171, U+0171, U+0172->U+0173, U+0173, U+0174->U+0175, U+0175,\
U+0176->U+0177, U+0177, U+0178->U+00FF, U+00FF, U+0179->U+017A, U+017A, U+017B->U+017C,\
U+017C, U+017D->U+017E, U+017E, U+0410..U+042F->U+0430..U+044F, U+0430..U+044F,\
U+05D0..U+05EA, U+0531..U+0556->U+0561..U+0586, U+0561..U+0587, U+0621..U+063A, U+01B9,\
U+01BF, U+0640..U+064A, U+0660..U+0669, U+066E, U+066F, U+0671..U+06D3, U+06F0..U+06FF,\
U+0904..U+0939, U+0958..U+095F, U+0960..U+0963, U+0966..U+096F, U+097B..U+097F,\
U+0985..U+09B9, U+09CE, U+09DC..U+09E3, U+09E6..U+09EF, U+0A05..U+0A39, U+0A59..U+0A5E,\
U+0A66..U+0A6F, U+0A85..U+0AB9, U+0AE0..U+0AE3, U+0AE6..U+0AEF, U+0B05..U+0B39,\
U+0B5C..U+0B61, U+0B66..U+0B6F, U+0B71, U+0B85..U+0BB9, U+0BE6..U+0BF2, U+0C05..U+0C39,\
U+0C66..U+0C6F, U+0C85..U+0CB9, U+0CDE..U+0CE3, U+0CE6..U+0CEF, U+0D05..U+0D39, U+0D60,\
U+0D61, U+0D66..U+0D6F, U+0D85..U+0DC6, U+1900..U+1938, U+1946..U+194F, U+A800..U+A805,\
U+A807..U+A822, U+0386->U+03B1, U+03AC->U+03B1, U+0388->U+03B5, U+03AD->U+03B5,\
U+0389->U+03B7, U+03AE->U+03B7, U+038A->U+03B9, U+0390->U+03B9, U+03AA->U+03B9,\
U+03AF->U+03B9, U+03CA->U+03B9, U+038C->U+03BF, U+03CC->U+03BF, U+038E->U+03C5,\
U+03AB->U+03C5, U+03B0->U+03C5, U+03CB->U+03C5, U+03CD->U+03C5, U+038F->U+03C9,\
U+03CE->U+03C9, U+03C2->U+03C3, U+0391..U+03A1->U+03B1..U+03C1,\
U+03A3..U+03A9->U+03C3..U+03C9, U+03B1..U+03C1, U+03C3..U+03C9, U+0E01..U+0E2E,\
U+0E30..U+0E3A, U+0E40..U+0E45, U+0E47, U+0E50..U+0E59, U+A000..U+A48F, U+4E00..U+9FBF,\
U+3400..U+4DBF, U+20000..U+2A6DF, U+F900..U+FAFF, U+2F800..U+2FA1F, U+2E80..U+2EFF,\
U+2F00..U+2FDF, U+3100..U+312F, U+31A0..U+31BF, U+3040..U+309F, U+30A0..U+30FF,\
U+31F0..U+31FF, U+AC00..U+D7AF, U+1100..U+11FF, U+3130..U+318F, U+A000..U+A48F,\
U+A490..U+A4CF
ngram_len=1
ngram_chars=U+4E00..U+9FBF, U+3400..U+4DBF, U+20000..U+2A6DF, U+F900..U+FAFF,\
U+2F800..U+2FA1F, U+2E80..U+2EFF, U+2F00..U+2FDF, U+3100..U+312F, U+31A0..U+31BF,\
U+3040..U+309F, U+30A0..U+30FF, U+31F0..U+31FF, U+AC00..U+D7AF, U+1100..U+11FF,\
U+3130..U+318F, U+A000..U+A48F, U+A490..U+A4CF
}

indexer{
 mem_limit=32M
}
searchd{
port=3312
log=/usr/local/sphinx/var/log/searchd.log
query_log=/usr/local/sphinx/var/log/query.log
read_timeout=5
max_children=30
pid_file=/usr/local/sphinx/var/log/searchd.pid
max_matches=1000
seamless_rotate=1
}

你可以参考一下,使用这个配置文件需要修改用户,密码保存目录等,来符合你自己mysql的要求。sphinx的官网的配置有一些问题,最关键的就是 morphology=none 这段在中文情况下不能使用,否则会导致无法启动searchd服务。

配置完成后,就可以进行索引:

/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --all

然后可以启动searchd

/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf

我们来用php api进行搜索,将安装目录的api文件都 copy 到 网站的根目录下,最重要的是sphinxapi.php

新建一个test.php文件,代码如下:

<?php 
require 'sphinxapi.php';
$q=$_GET['q']; 
$mode=SPH_MATCH_ALL; 
$host='localhost'; 
$port=3312; 
$index='*'; 
$groupby=''; 
$groupsort='@group desc'; 
$filter='site_id'; 
$filtervals=array(); 
$distinct=''; 
$sortby=''; 
$limit=20; 
$opts=array(
	'before_match'=>'<b>',
	'after_match'=>'</b>',
	'chunk_separator'=>' ... ',
	'limit'=>60,
	'around'=>3
); 
$ranker=SPH_RANK_PROXIMITY_BM25;
$cl=new SphinxClient(); 
$cl->SetServer($host,$port); 
$cl->SetWeights(array(100,1)); 
$cl->SetMatchMode($mode); 
if(count($filtervals))$cl->SetFilter($filter,$filtervals); 
if($groupby)$cl->SetGroupBy($groupby,SPH_GROUPBY_ATTR,$groupsort); 
if($sortby)$cl->SetSortMode(SPH_SORT_EXTENDED,$sortby); 
if($sortexpr)$cl->SetSortMode(SPH_SORT_EXPR,$sortexpr); 
if($distinct)$cl->SetGroupDistinct($distinct); 
if($limit)$cl->SetLimits(0,$limit,($limit>1000)?$limit:1000); 
$cl->SetRankingMode($ranker); 
$cl->SetArrayResult(true); 
$res=$cl->Query($q,$index); 
?>

这是一个最简单的测试实例,注意保存的charset是 utf-8 ,无BOM,现在可以通过 http://www.phpernote.com/test.php 来测试,结果会返回一个数组,sphinx不会返回title和content等内容,因此要根据id在mysql检索以显示文章标题和正文。

目前 sphinx 生成的索引文件不能大于2G

您可能感兴趣的文章

  • Sphinx在windows下安装使用[支持中文全文检索]
  • php.ini 中文英文对照详细配置手册
  • PHP判断上传文件类型最安全,最真实的解决办法
  • php smarty中文截取插件开发示例
  • thinkphp截取中文字符串的方法
  • 在php中分别使用curl的post提交数据的方法和get获取网页数据的方法总结
  • php如何将html中的br换行符转换为文本输入中的换行符
  • php中关于抽象(abstract)类和抽象方法的问题解析
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
如何将windows 7的语言设置为中文如何将windows 7的语言设置为中文Dec 21, 2023 pm 10:07 PM

有些朋友可能会在安装系统时不小心设置成了英文,结果所有界面都变成了英文,看都看不懂。其实我们可以在控制面板中设置语言,将语言更改为中文,下面就一起来看一下更改的方法吧。win7如何更改语言为中文1、首先点击屏幕左下角的按钮,然后选择“ControlPanel”2、找到“Clock,Language,andRegion”下的“Changedispalylanguage”3、点击下方“English”就可以在下拉菜单中选择简体中文了。4、确定之后点击“Logoffnow”注销并重启电脑。5、回来之后

如何使用php扩展Sphinx进行全文搜索如何使用php扩展Sphinx进行全文搜索Jul 29, 2023 am 10:05 AM

如何使用PHP扩展Sphinx进行全文搜索全文搜索是现代Web应用程序中的常见需求之一。为了满足用户对数据的高效查询和检索,我们可以使用Sphinx这个功能强大的开源搜索引擎来实现全文搜索功能。Sphinx使用C++编写,提供了PHP的扩展,方便我们在PHP项目中使用。本文将介绍如何使用PHP扩展Sphinx进行全文搜索

怎么将eclipse语言设置为中文怎么将eclipse语言设置为中文Jan 04, 2023 pm 03:50 PM

eclipse语言设置为中文的方法:1、打开浏览器找到语言包下载地址,并将最新的安装包地址复制;2、打开eclipse,点击“help”,然后点击安装新的插件;3、点击“Add”,在Location中粘帖网址;4、在下拉菜单中找到简体中文包,进行勾选,点击Next等待安装;5、重启eclipse即可。

Win11系统语言如何改成中文Win11系统语言如何改成中文Jun 29, 2023 pm 01:15 PM

  Win11系统语言如何改成中文?近期有用户刚给电脑安装了最新的Win11系统,但是在使用中发现系统语言为英文,自己使用起来很吃力,为此有没有什么方法可以将系统语言改成中文呢?方法很简单,下面我们来看看这篇Win11系统语言设置为中文的方法吧。  Win11系统语言设置为中文的步骤  1、首先我们进入齿轮按钮的settings,然后找到其中的Time打开时间和语言。  2、在时间和语言中点击左边栏的Language选项,然后在右侧点击Addalanguage。  3、接着在上方搜索框输入chi

CLIP不接地气?你需要一个更懂中文的模型CLIP不接地气?你需要一个更懂中文的模型Apr 25, 2023 am 08:58 AM

本文介绍的是达摩院魔搭社区ModelScope近期开源的中文CLIP大规模预训练图文表征模型,更加懂中文和中文互联网的图像,在图文检索、零样本图片分类等多个任务中实现最优效果,同时代码和模型已经全部开源,用户能够使用魔搭快速上手。模型使用入口:https://modelscope.cn/models/damo/multi-modal_clip-vit-base-patch16_zh/summaryGithub:https://github.com/OFA-Sys/Chinese-CLIP论文:

Sphinx 实现全文搜索的 PHP 应用指南Sphinx 实现全文搜索的 PHP 应用指南Oct 03, 2023 am 08:37 AM

Sphinx实现全文搜索的PHP应用指南引言:在现代的Web应用中,全文搜索功能已经成为了一个必备的特性。因为用户常常会通过输入关键词来搜索和匹配他们所需要的内容。为了提供高效和准确的搜索结果,我们需要一个强大的搜索引擎。而Sphinx作为一个开源的全文搜索引擎,它为PHP提供了一个完美的搜索解决方案。本文将介绍如何使用Sphinx实现

php怎么将月份转换为中文php怎么将月份转换为中文Mar 06, 2023 am 09:18 AM

php将月份转换为中文的方法:1、创建一个PHP示例文件;2、通过“public function dateToChinese($date){...}”方法将日期月份转换为全中文即可。

laravel表单验证的错误提示如何显示中文?laravel表单验证的错误提示如何显示中文?Mar 13, 2023 pm 03:49 PM

本篇文章给大家带来了关于Laravel的相关知识,其中主要介绍了 laravel的表单验证的错误提示怎么实现用中文显示?感兴趣的朋友,下面一起来看一下,希望对大家有帮助。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.