本搜索引擎框架实现了针对中文文本索引、搜索的基本功能和扩展接口。在 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部分
-
- # 项目使用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类
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系统基本上分两大类:
- # RedHat 系列:Redhat、Centos、Fedora等
- # Debian 系列:Debian、Ubuntu等
-
- # RedHat 系列:yum
- # Debian 系列:apt-get
-
请按照上面的安装工具分类安装不同的软件。请确保你的linux机器上已经安装过相应的安装软件工具。
- # 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