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

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

发布于 2021-01-12 字数 6302 浏览 1162 评论 0

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

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2583 文章
29 评论
84935 人气
更多

推荐作者

佚名

文章 0 评论 0

文江

文章 0 评论 0

2012013325

文章 0 评论 0

女中豪杰

文章 2 评论 0