文档章节

sphinx全文搜索Php方面的简单处理

风一样的世界
 风一样的世界
发布于 2015/08/21 11:41
字数 468
阅读 890
收藏 10

第一次尝试用sphinx来做全文搜索,可能有很多见解都不是很正确。有不同的想法,大家可以提出来。

现在版本的sphinx不知道支不支持中文了,问了群里的朋友都说不支持,所有用了以下的这种方法来做。

1、文章的处理。

假如文章表为article_main

id
title
summary
content
time
1
测试的标题
测试的摘要
测试的内容
123123123

由于sphinx不支持中文(真的吗?这里当它是吧)

我们新建立一个表article_unicode

id
article_id
title
summary
content
time
1
1
23243 23123 12213
12312 12312 12345
12312 12312 12345 123123123

这个新的表的结构和article_main的内容是一样的,但是储存的是中文的utf-8的unicode码。

这样我们在增加文章的时候同时把输入的标题、摘要、内容处理成utf-8的unicode码,然后再保存到article_unicode表中。

在配置sphinx的时候再以article_unicode这个表作为源(见:http://my.oschina.net/ptk/blog/495435

2、所用到的处理utf-8 unicode的类有如下:

http://git.oschina.net/ctk/laravel5_backend/blob/master/app/Libraries/Spliter.php

调用方法如下:

$titleSplited   = $spliterObject->utf8Split($data['title']);//文章标题
$index['title']   = $titleSplited['words']; //这样得到的值就是文章标题的utf-8的unicode码了。

然后保存到表中。

3、当我们作搜索的时候,同样的先把搜索词转化为unicode码,再用这个码来作sphinx的搜索

$object = new \stdClass();
$object->keyword = Request::input('keyword');
$searchProcess = new Process();

//这里其实就是把keyword转为unicode,我封装了一下。
$keywordUnicode = $searchProcess->prepareKeyword($object->keyword);

//然后通过sphinx搜索处理数据,最后拿到文章的id,即article_unicode表中的article_id
$object->sphinxResult_ArticleIds = $searchProcess->sphinxSearch($keywordUnicode);

//通过article_id再来做常规的查询。
$articleList = (new SearchModel())->activeArticleInfoBySearch($object);

这样就可以了。


© 著作权归作者所有

风一样的世界

风一样的世界

粉丝 16
博文 47
码字总数 14443
作品 1
广州
高级程序员
私信 提问
使用 Sphinx 更好地进行 MySQL 搜索

简介: 尽管 MySQL 是一个出色的通用数据库,但是如果您的应用程序需要进行大量搜索,那么使用 Sphinx 可获得更好的性能。尽管 Sphinx 是一种全文本搜索工具,但即使与非全文本查询一起使用,...

IBMdW
2012/02/07
1K
5
Apache Lucene 5.0 发布,Java 搜索引擎

Apache Lucene 开始了一个全新的里程碑,发布了 5.0 版本。该版本包括更强大的安全索引,降低内存堆的使用。同时包含其他的小改进。详细的内容请看发行说明。完整的改进列表请看 Changes。下...

JPowerman
2015/02/26
4
0
[coreseek/sphinx学习笔记1]--简介

[参考Coreseek 全文检索服务器 2.0 (Sphinx 0.9.8)参考手册,详情见http://www.coreseek.cn/docs/sphinx_doc_zhcn_0.9.pdf] 1.1 什么是Sphinx Sphinx 是 SQL Phrase Index 的缩写,但不幸的和......

酒肉穿肠过
2013/02/21
631
0
伍哥原创之豆荚商城商品搜索架构介绍

豆荚商城(www.dou55.com)商品搜索架构介绍 1,需求分析 伍哥所在的豆荚商城是一个家电行业的B2C网上零售平台。作为这样一个平台,自然少不了一个强大而且快速的商品搜索功能啦。这个搜索的...

alex.wu
2012/08/06
190
0
Sphinx 2.0.7 发布,全文搜索引擎

Sphinx 2.0.7 发布了,Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphin...

netnova
2013/04/25
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
35分钟前
5
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
52分钟前
94
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
今天
5
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
今天
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部