`
linliangyi2007
  • 浏览: 1013035 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

发布IKAnnlyzer3.2.0稳定版 for Lucene3.0

阅读更多
最新3.2.5版本已经推出,http://linliangyi2007.iteye.com/blog/758451

前言
由于Lucene3.0 API的全面升级,且不再与Lucene2.X兼容, IK Analyzer为此推出了3.2.0版本。该版本仅支持Lucene2.9 / 3.0和solr1.4的接口实现。
PS:使用Solr1.3和lucene2.9之前版本的用户请下载IK Analyzer3.1.6GA使用,谢谢!

IK Analyzer 3.2.0版本修订
  • 1.支持Lucene3.0 Analyzer实现
  • 2.移除solr1.3接口,修改solr1.4接口
  • 3.默认开放停止词功能,发布IK自带的ext_stopword.dic停止词典
  • 4.优化了IKQueryParser的性能


IK分词器对Lucene及solr的版本支持明细表



下载地址

IKAnalyzer3.2.0稳定版发布包

IKAnalyzer3.2.0稳定版使用手册





分享到:
评论
34 楼 syncml 2010-01-15  
IK可以不用他自带的词典,而只用我自己定义的词典?

我的目的是想要分析提取出一个文章的所有关键词(我把关键词作为词典)
33 楼 talangniao 2010-01-15  
Query query = IKQueryParser.parseMultiField(new String[] {
	                "shop_Name", "keyword" ,"province"}, keyword, flags);
			// 搜索相似度最高的5条记录----如果这里的相似度设置太低,会引起数组越界
			topDocs = isearcher.search(query, null ,5);

设置相似的度为5,但是实际检索大于5,就会引起
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
	at com.xjj.IKAnalyzer.IKAnalyzerDemo.search(IKAnalyzerDemo.java:130)
	at com.xjj.IKAnalyzer.IKAnalyzerDemo.main(IKAnalyzerDemo.java:43)
32 楼 talangniao 2010-01-14  
看来是我自己的失误,是不存在问题的.没有引进jk 直接就导入了数据
31 楼 talangniao 2010-01-14  
ModifiableSolrParams params = new ModifiableSolrParams();
		//spellCheckCompRH这句是开启solr的拼写检查的!建议先去solr的控制台查询结果看看!
		//如果屏蔽掉的话,是没有什么问题的,因为我有时候是不开启它的,使用没有错误的!
		//params.set("qt", "/spellCheckCompRH");
		params.set("q", "ssh");
		params.set("spellcheck", "on");
		params.set("spellcheck.build", "true");
		QueryResponse response = null;
		try {
			response = solr.query(params);
		} catch (SolrServerException e) {
			e.printStackTrace();
			return;
		}

跟着lianj_lee文章学习,进行查询测试,竟然只能查询出索引库中英文记录,包含中文的记录,检索不出来
直接使用http://localhost:8080/solr/core0/admin/ 的查询结果也是一样,包含中文的记录检索不到
<schema name="example core one" version="1.1">
  <types>
   <fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
   
   <!-- A text field that only splits on whitespace for exact matching of words -->
    <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      </analyzer>
    </fieldType>
    <!-- user IK ,代替掉下面的 -->
	<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
	    <analyzer type="index">
			<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" />
			<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
			<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" /> 
			<filter class="solr.LowerCaseFilterFactory" />
			<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
			<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
	    </analyzer>
	    <analyzer type="query">
			<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" />
			<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
			<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
			<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />  
			<filter class="solr.LowerCaseFilterFactory" />
			<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
			<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
	    </analyzer>
	</fieldType> 
  </types>

 <fields>   
  <!-- general -->
  <field name="id"       type="string"    indexed="true"  stored="true"  multiValued="false" required="true"/>
  <field name="type"     type="string"    indexed="true"  stored="true"  multiValued="false" /> 
  <field name="name"     type="string"    indexed="true"  stored="true"  multiValued="false" /> 
  <field name="author"    type="string"   indexed="true"  stored="true"  multiValued="false" />
  <field name="summary"    type="string"   indexed="true"  stored="true"  multiValued="false" />
  <field name="keywords"    type="string"   indexed="true"  stored="true"  multiValued="false" />
  <field name="core1"    type="string"    indexed="true"  stored="true"  multiValued="false" /> 
  <field name="all" type="text" indexed="true" stored="false" multiValued="true"/>  
 </fields>

 <!-- field to use to determine and enforce document uniqueness. -->
 <uniqueKey>id</uniqueKey>

 <!-- field for the QueryParser to use when an explicit fieldname is absent -->
 <defaultSearchField>name</defaultSearchField>

 <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
 <solrQueryParser defaultOperator="OR"/>
 
 <copyField source="id" dest="all"/>
 <copyField source="name" dest="all"/>
 <copyField source="summary" dest="all"/>
 <copyField source="author" dest="all"/>
 <copyField source="keywords" dest="all"/>
 
30 楼 wensky222 2010-01-14  
		QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field,
				analyzer);
		Query query = null;
		query = parser.parse(str);
		// query为PhraseQuery的对象
		query = IKQueryParser.parse(field, str);
//query为 BooleanQuery的对象,不为什么这样呢??

  PhraseQuery应该与词语的顺序有关系,而booleanQuery就不一定了.

29 楼 whaosoft 2010-01-13  
对了 lz 你经常上什么 聊天工具呢?
28 楼 linliangyi2007 2010-01-13  
zxzheaven 写道
linliangyi2007 写道
zxzheaven 写道
之前用庖丁,在搜索
“日常用语8000句(102) - 断念、绝望”
可以把有'日常用语"的其他的都可以搜索出来,不过用了这个就不行了

我是用的
query = IKQueryParser.parse("title",queryString);

是不是就是说分词没有起作用?


IKQueryParser默认把“日常用语8000句”解析为“日常”and“用语”and“8000”and“句”,如果你想使用标准的QueryParser,就可以搜索你要的那种结果了


谢谢你的回复,不过我不太明白为什么“日常用语8000句”解析为“日常”and“用语”and“8000”and“句”这样搜索不出来?

默认的是 “或” 的关系吗?


是的。and关系一定是要求几个词都出现在文档的同一field中,这将提高命中率,但降低召回率。如果你的查询短语是“日常 用语 8000局”,那么带空格的短语IKQueryParser会解析为or
27 楼 linliangyi2007 2010-01-13  
talangniao 写道
现在IK 版本升级了,使用3.2
使用sort1.4版本,升级Lucene到3.0,sort1.4范例中为2.9.1 版本,升级到3.0后,
替换掉jar包,启动发现找不到
严重: java.lang.NoClassDefFoundError: org/apache/lucene/search/ConstantScoreRan
eQuery
        at org.apache.solr.handler.admin.AdminHandlers.inform(AdminHandlers.jav
:82)
        at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.ja
a:486)

3.0已经删除掉了ConstantScoreRaneQuery.java ,可是sort1.4中还引用,这个问题应该怎么解决?


solr1.4目前支持的是Lucene2.9啊,这个我就没办法了,不过好在IK3.2是支持Lucene2.9的
26 楼 whaosoft 2010-01-13  
songzi0206 写道
linliangyi2007 写道
songzi0206 写道
whaosoft 写道
lucene 有点怪异 无法理解为什么不向下兼容~~ ~
对了 我在用compass 不知道能不能和你的这个结合呢?
不过我能用庖丁


我之前也用compass,但是性能测试下来貌似并发搜索部分性能达不到预期啊,一般搜索500个并发平均响应时间1100ms,复杂一点搜索还出现过死锁,不知道ls有没有遇到这种情况。


老实说,既然是全文检索,文件数据库比RDB要快的多。你把索引存数据库,中间再由JDBC协议转一手,可定不能高并发了。


我没有把索引存在数据库中,貌似并发搜索部分的瓶颈在compass,直接在lucene基础上写要好不少

真不好意思 我今天才看见回帖 感谢大家的关注 我用compass 完全因为我们公司现在的框架 由于框架是我用我之前公司改的 而且持久层用hibernate 还要用配置文件那样写 所以我只能用compass了 而且我也不好推翻自己的框架呀

确实他很慢我感觉 简直有点无法忍受 后来我没叫compass和spring的事务结合起来 查索引时不查数据库了 现在速度还能将就  用compass 主要因为我要坚持我们 要返回pojo的原因 感觉挺方便就嫩么用了 不过朋友推荐我 用sphinx 不知道有用过的没?
25 楼 talangniao 2010-01-13  
现在IK 版本升级了,使用3.2
使用sort1.4版本,升级Lucene到3.0,sort1.4范例中为2.9.1 版本,升级到3.0后,
替换掉jar包,启动发现找不到
严重: java.lang.NoClassDefFoundError: org/apache/lucene/search/ConstantScoreRan
eQuery
        at org.apache.solr.handler.admin.AdminHandlers.inform(AdminHandlers.jav
:82)
        at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.ja
a:486)

3.0已经删除掉了ConstantScoreRaneQuery.java ,可是sort1.4中还引用,这个问题应该怎么解决?
24 楼 zxzheaven 2010-01-13  
linliangyi2007 写道
zxzheaven 写道
之前用庖丁,在搜索
“日常用语8000句(102) - 断念、绝望”
可以把有'日常用语"的其他的都可以搜索出来,不过用了这个就不行了

我是用的
query = IKQueryParser.parse("title",queryString);

是不是就是说分词没有起作用?


IKQueryParser默认把“日常用语8000句”解析为“日常”and“用语”and“8000”and“句”,如果你想使用标准的QueryParser,就可以搜索你要的那种结果了


谢谢你的回复,不过我不太明白为什么“日常用语8000句”解析为“日常”and“用语”and“8000”and“句”这样搜索不出来?

默认的是 “或” 的关系吗?
23 楼 linliangyi2007 2010-01-12  
zxzheaven 写道
刚看到lucene3.0带有SmartChineseAnalyzer

那个就是中科院算法的java版了,不过貌似用的是1.0的算法,2.0和3.0算法都是商用的,需要付费。
22 楼 linliangyi2007 2010-01-12  
zxzheaven 写道
之前用庖丁,在搜索
“日常用语8000句(102) - 断念、绝望”
可以把有'日常用语"的其他的都可以搜索出来,不过用了这个就不行了

我是用的
query = IKQueryParser.parse("title",queryString);

是不是就是说分词没有起作用?


IKQueryParser默认把“日常用语8000句”解析为“日常”and“用语”and“8000”and“句”,如果你想使用标准的QueryParser,就可以搜索你要的那种结果了
21 楼 zxzheaven 2010-01-12  
刚看到lucene3.0带有SmartChineseAnalyzer
20 楼 zxzheaven 2010-01-12  
之前用庖丁,在搜索
“日常用语8000句(102) - 断念、绝望”
可以把有'日常用语"的其他的都可以搜索出来,不过用了这个就不行了

我是用的
query = IKQueryParser.parse("title",queryString);

是不是就是说分词没有起作用?
19 楼 zxzheaven 2010-01-12  
我想遍历一个字符串的每一个字符,以前是用string.toCharArray()来转换成一个char[]一个一个看的

不过我看到有些,特别是lucene的分词器,他们都是用的stringreader来遍历一个字符串的

是不是stringreader要比string.toCharArray()换成的char[]要来的快?
18 楼 linliangyi2007 2010-01-11  
zxzheaven 写道
比较关心和paoding的性能比较,呵呵


最好自己测试吧,呵呵有说快有说慢的,不如自己动手比较一下。

个人认为,分词器到了一定解析速度后,速度已经不是问题,关键是效果了。
17 楼 zxzheaven 2010-01-11  
比较关心和paoding的性能比较,呵呵
16 楼 dsf007 2009-12-21  
太cool了,更新很及时呢,支持了lucene3.0,希望尽快放出3.2.0的zip格式源码包,svn不如直接下zip爽啊.一直坚持着ik的更新,向你致敬~
15 楼 chrislusf 2009-12-17  
不敢当。IKAnalyzer更有名呀。DBSight还没有很多人知道。

其实DBSight是个很好的工具,省去了重新发明轮子的工作。免费版的功能几乎都有。欢迎用用,提出建议。我会改进的。谢谢!

相关推荐

    OpenCV3.2.0稳定版调用包

    本包是从OpenCV3.2.0源码中编译得来,包中含有include目录、bin目录和lib目录,没有冗余文件,下载后解压即可使用,不用安装,简单可靠。使用VS,需要在项目属性中添加头文件目录和库目录,具体见OpenCV的配置方法。

    Proneta Pro 3.2.0 专业版

    总的来说,Proneta Pro 3.2.0 作为一款专业版软件,旨在提供全面的数据管理和安全解决方案,帮助用户在日常工作中实现更高效、更安全的数据处理。通过详细阅读"使用说明.txt"并正确安装"proneta_3_2_0_0" 文件,用户...

    tower pro 3.2.0 MAC 特别版

    Mac 苹果系统下面的GIT图形化管理工具,tower pro 3.2.0最新破解特别版

    arcgis扩展插件XTools Pro 3.2.0注册版

    这个注册版意味着用户可以获得全部功能而无需额外购买许可证,这对于需要频繁使用高级GIS功能的专业人士来说,无疑是一个很大的便利。 XTools Pro提供的扩展功能涵盖了许多方面: 1. 数据处理:包括批量转换数据...

    WeLive免费在线客服系统 v3.2.0 商业版 破解版 特别版V1.0

    Sorry,我知道是要免费提供的,可是我的CSDN老是不够用 此版本能够看到记录,某用户的记录,并删除记录。 一.... ------------------ WeLive在线客服系统是一个程序小巧, 安装使用简单的网上在线客服系统, 主要特点:...

    IKAnalyzer中文分词器 3.2.0 稳定版

    新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 IKAnalyzer3.0特性: 采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力...

    Wireshark-win64-3.2.0-2019-12月版本.rar

    在2019年12月发布的Wireshark 3.2.0版本中,它为用户提供了更加强大的功能和改进,尤其是对5G NR(New Radio)和WIFI等通信协议的支持,使得在Windows 64位操作系统上分析这些高级通信技术的数据流变得更加便捷。...

    tomcatPluginV3.0+tomcatPluginV3.2.1+tomcatPluginV3.2.0

    2. 问题修复:针对V3.2.0存在的部分bug,V3.2.1进行了修复,提升了整体稳定性。 3. 新增功能:可能包含了一些新的特性或者功能增强,具体取决于该版本的更新日志。 总结来说,Eclipse Tomcat Plugin从V3.0到V3.2.1...

    android studio v 3.2.0 & v3.1.2 for mac

    mac的android studio 3.1.2版本和 3.2.0版本,是dmg格式的,下载之后 直接将android 图标拖到右侧即可,我将内容分享到了百度网盘, 永久有效,有需要的朋友们 可以下载

    旗舰版和平之翼Java通用代码生成器SMEU 3.2.0 正式版乌篷船盛装发布

    经历了数月艰苦的开放和程序员最痛苦的测试,今天,世上最强,最完善,最稳定和测试最充分,文档最完整的旗舰版和平之翼Java通用代码生成器SMEU 3.2.0 正式版乌篷船盛装发布了。欢迎大家下载使用。 请至本项目码云...

    OPENCV3.2.0版本.zip

    在这个"OPENCV3.2.0版本.zip"压缩包中,包含的是OpenCV 3.2.0的安装程序——opencv-3.2.0-vc14.exe,这是一个适用于Windows 10系统的预编译版本,特别针对Visual Studio 2015 (VC14)进行优化。 OpenCV 3.2.0是该库...

    最新的texturePacker3.2.0mac 版本

    喜获的同学可以下在别忘记评论,工具很好用快快来下哦

    spring3.2.0最新版本

    在"压缩包子文件的文件名称列表"中,"spring-3.2.0.M1-dist"可能是一个预发布版本(M1代表 Milestone 1),它是在正式版本发布前的一个测试版,用于收集反馈和修复问题。尽管不是最终版本,但M1版本已经包含了大部分...

    tomcatPluginV3.0+tomcatPluginV3.2.0+tomcatPluginV3.2.1

    tomcatPluginV3.2.1 tomcatPluginV3.0 tomcatPluginV3.2.0 TomcatPlugin是一个由Sysdeo公司开发的,用于在Eclipse中启动和管理Tomcat的一个插件。 用Eclipse开发WEB项目的时候,如果你有安装了Myeclipse,就可以...

    ExtJS 3.2.0 API 中文版 CHM

    ExtJS 3.2.0 API 中文版 CHM

    exosip2-3.2.0 wince版

    版本3.2.0是一个稳定版本,修复了之前版本中的许多bug,并可能引入了一些新的特性以提升性能和兼容性。 在“exosip2-3.2.0 wince版”中,提供的编译好的库文件是专门为Windows CE操作系统编译的,这意味着开发者...

    setup-3.2.0-网络版.exe

    setup-3.2.0-网络版.exe

    openssl库源码,3.2.0版本

    2. **版本管理**:定期更新 OpenSSL 到最新稳定版,以获取最新的安全修复和功能。 3. **测试与验证**:使用第三方工具进行加密库的测试,如 NIST 的测试套件,确保实现的加密算法正确无误。 综上所述,OpenSSL ...

    lucene-core-3.2.0.jar

    lucene-core-3.2.0.jar 全文检索

    opencv 3.2.0版本下载.zip

    在这个“opencv 3.2.0版本下载.zip”压缩包中,我们聚焦于在Linux环境下,特别是ARM架构的lUbuntu 16.04系统上配置OpenCV 3.2.0与Python 3.2.0的集成。 首先,安装OpenCV通常需要CMake工具,因为它是构建OpenCV的...

Global site tag (gtag.js) - Google Analytics