zh-solr-se 基于 solr 的中文搜索引擎框架
本搜索引擎框架实现了针对中文文本索引、搜索的基本功能和扩展接口。在 solr/lucence 和 paoding 基础上封装,结合中文文本特点,单独定制开发的一款搜索引擎框架。框架实现了 multi-core 共享 solr,独立的索引创建、部署,支持多种格式数据接口,基本搜索接口、搜索结果多维度评价等功能。本框架中几个子工程需要使用 maven2 打包、编译。
使用的开源框架和版本
*apache solr 1.4 *lucence 2.9.3 *paoding-2.0.4-beta *servlet-2.4 *maven2 *sun-jdk-1.6
下载区文件介绍
*zh-solr-se-src-0.1.zip 本项目的源代码(非常干净) *zh-solr-se-0.1.zip 项目的部署程序(包含一个core-chinese的实例)
源代码组织结构介绍
*indexer --- 创建索引部分 *movie-data.json --- 样本文件,json格式 *pom.xml --- maven pom文件 *searcher --- 搜索接口 *solr --- solr base 文件 *solr-paoding-analysis --- paoding绑定solr部分
FYI
# 项目使用maven2组织,请使用的同学先安装maven2。 # 项目在linux下安装编译,因为项目使用了linux文件系统的路径表法方式,可能在其他系统上会出现问题。
如何从源代码编译部署工程
环境准备
下面的环境是必须的:
* linux, 暂时不支持其他平台 * maven2, 工程的组织以来maven * jvm1.6, java工程
编译
# 下载、解压 * download zh-solr-se-src-0.1.zip * rm -rf /var/zh-solr-se* * mv zh-solr-se-src-0.1.zip /var/ * unzip zh-solr-se-src-0.1.zip # 编译 * cd /var/zh-solr-se * mvn clean * mvn install
如果运行成功会看到下面的信息:
[INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] ------------------------------------------------------------------------ [INFO] zh-solr-se-parent ..................................... SUCCESS [1.368s] [INFO] zh-solr-se-solr-paoding-analysis ...................... SUCCESS [4.122s] [INFO] zh-solr-se-indexer .................................... SUCCESS [4.328s] [INFO] zh-solr-se-searchser .................................. SUCCESS [2.428s] [INFO] ------------------------------------------------------------------------ [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------
部署
如果上面创建索引的命令出现curl异常,需要你的linux机器上安装curl,使用命令 apt-get install curl 或者 yum install curl
测试
http://localhost:8983/solr/ 可以看到页面只有一个 core-chinese,点击进入 chinese 页面,在Query string 文本框输入 *:*,点击 Search,可以看到整个 core-chinese 的所有数据(xml格式)。
如何定制化开发自己的搜索引擎
索引部分
1. 将 indexer 工程导入 eclipse(any IDE you prefer) 有一个非常简便的方法,进入 indexer 目录,使用命令 mvn eclipse:eclipse,然后在eclipse中导入现有工程即可。
2. 创建你的indexer
//参照chinese包,建立你的包,举个例子,你的包名叫 movie //创建class, 参照ChineseIndexer public class MovieIndexer extends IndexerBase { ... //重写 indexAllDocuments() main() //修改IndexerMain,添加MovieIndexer到工厂方法 private IndexerBase getIndexer(final String coreName) throws UnsupportedCoreException { if (SolrConstants.CORE_NAME_CHINESE.equalsIgnoreCase(coreName)) { return new ChineseIndexer(); } else if (SolrConstants.CORE_NAME_MOVIE.equalsIgnoreCase(coreName)) { return new MovieIndexer(); } else { throw new UnsupportedCoreException(coreName); } }
搜索部分
1. 将searcher导入eclipse 2. 参照chinese包,创建你的包,还是用movie举例
public class MovieSearchService extends DefaultSearchService { ... 重写 execute()
3. 在SearchServiceFactory添加movie的searchservice类
solr 配置
1. 创建 core-movie
* cd /var/zh-solr-se/solr/solr * cp -r core-chinese core-movie * cd core-movie/conf * 修改schema.xml(主要是字段和要选取的数据类型), 这是core-chinese的字段,你需要修改为movie的字段,类型,是否需要索引、是否存储到索引... 修改schma的名字 <schema name="chinese" version="1.1"> ... <fields> <field name="chinese_id" type="string" indexed="true" stored="true" required="true" /> <field name="chinese_name" type="string" indexed="true" stored="true" required="false" /> <field name="chinese_content" type="text" indexed="true" stored="true" required="false" omitNorms="true"/> <dynamicField name="_local*" type="sdouble" indexed="true" stored="true"/> </fields> * 修改solrconfig.xml, 制定索引数据位置 <dataDir>${solr.data.dir:./solr/core-movie/data}</datadir>
2. 添加core-movie到solr.xml cd /var/zh-solr-se/solr/solr 添加下面一行:
<core name="core-movie" instanceDir="core-movie"/>
中文解析部分
<tokenizer class="net.paoding.analysis.analyzer.ChineseTokenizerFactory"/> ...
在linux下安装maven2
linux分类
一般来说著名的linux系统基本上分两大类:
# RedHat 系列:Redhat、Centos、Fedora等 # Debian 系列:Debian、Ubuntu等
安装工具
# RedHat 系列:yum # Debian 系列:apt-get
请按照上面的安装工具分类安装不同的软件。请确保你的linux机器上已经安装过相应的安装软件工具。
安装maven2
# RedHat系列:yum install maven2 # Debian系列:apt-get install maven2
验证
在用户根目录下,有一个隐藏文件,使用 ls -al 命令察看,可以看到一个 .m2 的目录,该目录就是maven2的本地库。在用户根录,运行 mvn -v 命令可以看到相关版本信息。
如何运行工程中的样本?
要点
zh-solr-se-0.1.zip中已经包含样本和数据
* core-chinese * source data(json) * index data * solr.war * denpendent jars
运行步骤
1. download zh-solr-se-0.1.zip
2. 在/var目录下解压(必须在/var目录下)
* mv zh-solr-se-0.1.zip /var/ * unzip zh-solr-se-0.1.zip
3. 进入解压后目录
* cd /var/zh-solr-se/solr
4. 启动solr
* ./solr stop * ./solr start
5. 访问 solr(须保证8983端口可用) http://localhost:8983/solr/ 可以看到页面只有一个 core-chinese,点击进入 chinese 页面,在 Query string 文本框输入,点击Search,可以看到整个core-chinese的所有数据(xml格式)。
相关链接
github 地址:https://github.com/mayanhui/zh-solr-se
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论