全文搜索引擎 Elasticsearch 教程

全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。

它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。

Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。

本文从零开始,讲解如何使用 Elastic 搭建自己的全文搜索引擎。每一步都有详细的说明,大家跟着做就能学会。 Continue reading “全文搜索引擎 Elasticsearch 教程”

使用docker安装ElasticSearch

方案一:使用dockerhub镜像

成功后访问:http://127.0.0.1:9200,该镜像默认不需要任何账号密码验证。

方案二:使用elastic镜像

具体请参考官方网站手册:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/docker.html

开发环境可以通过以下命令执行ES:

成功后访问:http://127.0.0.1:9200,默认账号密码:elastic/changeme

Continue reading “使用docker安装ElasticSearch”

用于Lucene的各中文分词比较

对几种中文分析器,从分词准确性和效率两方面进行比较。分析器依次为:StandardAnalyzer、ChineseAnalyzer、 CJKAnalyzer、IK_CAnalyzer、MIK_CAnalyzer、MMAnalyzer(JE分词)、PaodingAnalyzer。
单纯的中文分词的实现一般为按字索引或者按词索引。按字索引顾名思义,就是按单个字建立索引。按词索引就是按词喽,根据词库中的词,将文字进行切分。车东的交叉双字分割或者叫二元分词我觉得应该算是按字索引的改进,应该还是属于字索引的范畴吧。

Continue reading “用于Lucene的各中文分词比较”

使用PHP+Sphinx建立高效的站内搜索引擎

1.    为什么要使用Sphinx

假设你现在运营着一个论坛,论坛数据已经超过100W,很多用户都反映论坛搜索的速度非常慢,那么这时你就可以考虑使用Sphinx了(当然其他的全文检索程序或方法也行)。

 

2.    Sphinx是什么

Sphinx由俄罗斯人Andrew Aksyonoff 开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行。

全文检索是指以文档的全部文本信息作为检索对象的一种信息检索技术。检索的对象有可能是文章的标题,也有可能是文章的作者,也有可能是文章摘要或内容。

 

3.    Sphinx的特性

l  高速索引 (在新款CPU上,近10 MB/秒);

l  高速搜索 (2-4G的文本量中平均查询速度不到0.1秒);

l  高可用性 (单CPU上最大可支持100 GB的文本,100M文档);

l  提供良好的相关性排名

l  支持分布式搜索;

l  提供文档摘要生成;

l  提供从MySQL内部的插件式存储引擎上搜索

l  支持布尔,短语, 和近义词查询;

l  支持每个文档多个全文检索域(默认最大32个);

l  支持每个文档多属性;

l  支持断词;

l  支持单字节编码与UTF-8编码;

  Continue reading “使用PHP+Sphinx建立高效的站内搜索引擎”