在上一节【编译Ansj之Solr插件】中介绍如何编译ansj分词在solr(lucene)环境中使用的接口,本章将介绍如何在solr中使用ansj,其步骤主要包括:下载或者编译ansj和nlp-lang等jar包、在schema中配置相关类型、将ansj和nlp-lang等jar包配置到solr中、测试ansj分词效果。

一、下载或者编译ansj-seg和nlp-lang等jar包。

   1、您可以到 http://maven.ansj.org/org/ansj/ansj_seg/  | http://maven.ansj.org/org/nlpcn/ 中下载相关jar包。

    ansj-seg相关jar包,如下图所示:

    

nlp-lang 是ansj-seg分词中关于自然语言处理相关工具类,功能比较强大:

   

  2、下载相关源码,自己编译。

    这种是相对复杂的,但是如果长久使用,这种是很有必要的。对于这种优秀的分词,我们更有必要好好研究一番。

    github地址:https://github.com/NLPchina/ansj_seg

    git客户端地址:http://git-scm.com/download/

git下载源码命令:git clone  https://github.com/NLPchina/ansj_seg.git

    下载后的文件结构如下:

   

   可见代码是用maven组中管理的。对于maven的安装配置本文旧粗略带过,主要包括:

    下载maven相关包,解压:

     

   配置环境变量M2_HOME:C:\apache-maven-3.2.1

   配置PATHb环境变量:%M2_HOME%\bin;

   mvn常有命令:mvn clean install#清理本地缓存、下载依赖jar包 可以添加-DskipTests=true忽略单元测试;mvn eclipse:clean #清理mvn生成的eclipse工程;mvn eclipse:eclipse #根据pom.xml生成eclipse工程。

   步骤:

     在源码根路径下执行: mvn clean install -DskipTests=true  命令,在target目录下生成jar包。

    

    target目录:

    

   同义的道理,可以编译nlp-lang jar包,地址:https://github.com/NLPchina/nlp-lang   

二、在solr schema.xml中配置好ansj字段类型。

  1、创建ansj类型。

    找到schema.xml,添加ansj类型text_ansj: 

	<!--ansj start -->

	<fieldType name="text_ansj" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.ansj.solr.AnsjTokenizerFactory" isQuery="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.ansj.solr.AnsjTokenizerFactory"/>
</analyzer>
</fieldType> <!--ansj end -->

  org.ansj.solr.AnsjTokenizerFactory 是我们编译的ansj-lucene插件。

  2、配置需要索引的字段。    

   <!-- ansj_test field -->
<field name="POI_OID" type="string" indexed="false" stored="true"/>
<field name="POI_NAME" type="text_ansj" indexed="true" stored="false"/>
<field name="POI_NAME_SUGGEST" type="string" indexed="false" stored="true"/>
<field name="POI_ADDRESS" type="text_ansj" indexed="true" stored="false"/>
<field name="POI_ADDRESS_SUGGEST" type="string" indexed="false" stored="true"/>
<field name="POI_PHONE" type="string" indexed="true" stored="true"/>
<field name="POI_TYPE" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="POI_URL" type="string" indexed="false" stored="true"/>
<field name="POI_DIANPING" type="string" indexed="true" stored="true" />
<field name="POI_BRAND" type="string" indexed="true" stored="true"/>
<field name="POI_CITY" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="POI_TAG" type="text_ansj" indexed="true" stored="true"/>
<field name="POI_LAT" type="double" indexed="false" stored="true"/>
<field name="POI_LON" type="double" indexed="false" stored="true"/>
<field name="POI_DATA_TYPE" type="string" indexed="true" stored="false"/>

三、在solr环境中配置好ansj。

  在编译好的ansj-seg、nlp-lang、ansj_lucene4_plug 放到solr war包的lib下。

  

  

配置ansj相关词库和配置文件,这些配置文件在ansj源码目录下:

  

  把这三个配置文件放到solr程序WEB-INF/classes目录下,classes目录不存在则手动创建。

    

四、测试ansj分词效果。

  ansj配置好了以后,把solr所在的tomcat启动一下。用solr管理页面查看效果:

  1、测试分词 "南京市长江大桥”

  

    备注:在文本框中输入“南京市长江大桥” 点击右边蓝色的按钮“Analyse Values”

文章转载,请注明出处:http://www.cnblogs.com/likehua/p/4481219.html

在Solr中配置和使用ansj分词的更多相关文章

  1. 在Solr中配置中文分词IKAnalyzer

    李克华 云计算高级群: 292870151 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch 在Solr中配置中文分词IKAnalyzer 1.在配置文件schema.xml ...

  2. Solr 06 - Solr中配置使用IK分词器 (配置schema.xml)

    目录 1 配置中文分词器 1.1 准备IK中文分词器 1.2 配置schema.xml文件 1.3 重启Tomcat并测试 2 配置业务域 2.1 准备商品数据 2.2 配置商品业务域 2.3 配置s ...

  3. Solr的配置和在java中的使用

    Solr是一个全局站内搜索引擎,可以快速的搜索出结果. Solr依赖于tomcat,把Solr的war包放到tomcat中即可运行. 使用solr,需要在solr的schema.xml中配置solr与 ...

  4. Solr中Schema.xml中文版

    <?xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Sof ...

  5. ansj分词

    本文转载至:https://blog.csdn.net/bitcarmanlee/article/details/53607776 最近的项目需要使用到分词技术.本着不重复造轮子的原则,使用了ansj ...

  6. Solr索引配置

    Solr主配置文件 schema.xml,在SolrCore的conf目录下,它是Solr数据表配置文件,它定义了加入索引的数据的数据类型的.主要包括FieldTypes.Fields和其他的一些缺省 ...

  7. elasticsearch安装ansj分词器

    1.概述    elasticsearch用于搜索引擎,需要设置一些分词器来优化索引.常用的有ik_max_word: 会将文本做最细粒度的拆分.ik_smart: 会做最粗粒度的拆分.ansj等. ...

  8. BugPhobia沟通篇章:Solr模式配置与数据导入调研

    0x01 :Scrum Meeting特别说明 特别说明,考虑到编译原理课程考核的时间安排,每天开发时间急剧缩短以至于难以维系正常的Scrum Meeting,因此,将2015/12/13 00:00 ...

  9. ansj分词史上最详细教程

    最近的项目需要使用到分词技术.本着不重复造轮子的原则,使用了ansj_seg来进行分词.本文结合博主使用经过,教大家用最快的速度上手使用ansj分词. 1.给ansj来个硬广 项目的github地址: ...

随机推荐

  1. HTML5&CSS3经典动态表格

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 极富创意的3D文件夹切换效果

    今天分享的是一个极富创意的文件夹切换效果.这个案例使用CSS 3动画实现了一个3D的平行六面体旋转效果.点击顶部的3个按钮可以旋转并切换.另外,每个六面体本身是一个文件夹,点击后可以展开查看里面的详情 ...

  3. 【javascript激增的思考01】模块化编程

    前言 之前我做过一个web app(原来可以这么叫啦),在一个页面上有很多小窗口,每个小窗口都是独立的应用,比如: ① 我们一个小窗口数据来源是腾讯微博,需要形成腾讯微博app小窗口 ② 我们一个小窗 ...

  4. (转)高性能JavaScript:加载和运行(动态加载JS代码)

    浏览器是如何加载JS的 当浏览器遇到一个<script>标签时,浏览器首先根据标签src属性下载JavaScript代码,然后运行JavaScript代码,继而继续解析和翻译页面.如果需要 ...

  5. spring web MVC

    详情:http://blog.csdn.net/mic_hero/article/details/50237627

  6. 关于Android 的内存泄露及分析

    一. Android的内存机制Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似.程序员通过new为对象分配内存,所有对象在java堆内分配空间:然而对象的释 ...

  7. iOS关于菜单滚动视图实现

    菜单滚动视图也是在项目开发过程中比较常用到的功能,先直接看效果图 实现的效果如下: 当菜单个数的总长度超过一个屏宽度就计算每一个的文字宽度,若没有则只进行一个屏平分,点击菜单项时,滚动的视图位置会随着 ...

  8. 【代码笔记】iOS-后台运行,可以选择在前台或后台或前后台

    一,工程图. 二,代码. AppDelegate.h AppDelegate.m RootViewController.h #import <UIKit/UIKit.h> @interfa ...

  9. django tmeplate 循环基数

    {% for item in item_list %} {{ forloop.counter }} {# starting index 1 #} {{ forloop.counter0 }} {# s ...

  10. ajax页面加载进度条插件

    下面两个都是youtube视频的加载进度条效果的ajax插件 一.官网:http://ricostacruz.com/nprogress/官网 github:https://github.com/rs ...