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

