2025年4月2日 星期三 乙巳(蛇)年 正月初三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > 网络服务

zh-solr-se 基于 solr 的中文搜索引擎框架

时间:12-14来源:作者:点击数:8
CDSY,CDSY.XYZ

本搜索引擎框架实现了针对中文文本索引、搜索的基本功能和扩展接口。在 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

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐