solr jcseg 词库自动加载的问题

末之未央 发布于 2015/09/10 17:57
阅读 1K+
收藏 0

@狮子的魂

你好,最近项目的搜索需要分词,试了好几种,碰到jcseg觉得很不错。

我现在的问题是按照配置顺序来的 但是还是没办法自动加载词库  solr启动时都没加载。

我想知道 除了配置autoload为1 和在lex-autoload.todo内加要更新的文件名  之外 还有其他的配置吗?

solr 启动时 调试ADictionary内 autoloadThread为null 而自动加载 更是都没进去这个类






加载中
0
末之未央
末之未央
哦 对了 时间我也设了 30S
0
狮子的魂
狮子的魂
用的最新版本吗?http://git.oschina.net/lionsoul/jcseg
末之未央
末之未央
回复 @狮子的魂 : 定时有用,但词库未更新
末之未央
末之未央
回复 @狮子的魂 : 现在定时生效了~ 但是 获取的lastModified和文件的lastModified都为0 你知道是什么原因吗 词库的路径我已经在配置文件内指定了。。。
末之未央
末之未央
回复 @狮子的魂 : 最新版本貌似不兼容solr4.7.2啊 因为如果我换solr版本的话 改动太大了
狮子的魂
狮子的魂
回复 @末之未央 : 老版本有bug,http://git.oschina.net/lionsoul/jcseg下载最新版本就ok了!
末之未央
末之未央
solr 4.72 jcseg 1.94
0
末之未央
狮子的魂
狮子的魂
回复 @末之未央 : 请先升级,将analyzer改下就可以适应solr的老版本了,或者把1.9.4的老版本的analyzer那过来覆盖就ok了!
末之未央
末之未央
回复 @狮子的魂 : 没有权限的问题 我先改成单例试试
狮子的魂
狮子的魂
除此外,另外还有一个问题,就是如果solr启动了多个Jcseg词库实例,只有一个词库实例会更新词库,因为一个词库更新完后,他就会清空autoload.todo,你可能需要自己把Dictionary类改成单例模式!
狮子的魂
狮子的魂
有权限问题吗?
0
失不再来
 @狮子的魂  @末之未央 两位大哥 我刚研究分词不久 现在碰到类似多实例的问题,请问怎么改成单例模式啊
末之未央
末之未央
单例模式 百度google都有的 改起来很简单 实在不会私信我 不过我觉的自己研究最好
狮子的魂
狮子的魂
请google一下“java单例设计模式”! 然后更改下org.lionsoul.jcseg.Dictionary为单例模式即可!
0
末之未央
末之未央

@狮子的魂 你好 我想再问下 你jcseg的词库用什么工具来维护的?或者说怎么维护起来方便,这段时间下来,最终确定用jcseg分词 因为比较符合我们的项目需求,但是发现词库的维护 是个恶心的地方。。。

末之未央
末之未央
特别是前期,一大堆词组 要转成jcseg的。。。
0
狮子的魂
狮子的魂

引用来自“末之未央”的评论

@狮子的魂 你好 我想再问下 你jcseg的词库用什么工具来维护的?或者说怎么维护起来方便,这段时间下来,最终确定用jcseg分词 因为比较符合我们的项目需求,但是发现词库的维护 是个恶心的地方。。。

我之前都是自己写程序组合维护的,也没有提供什么专业的维护工具,少部分更改都是直接用的文本编辑器。

如果你们项目需求大,可以自己做个管理工具,我们自己项目就把词条存储在数据里面了,然后提供web管理界面和刷新控件!

狮子的魂
狮子的魂
回复 @末之未央 : 除了切分速度,其他没啥影响!(排除大颗粒切分对你项目的影响)
末之未央
末之未央
@狮子的魂 jcseg配置文件内 maxlen 最大匹配数 你建议设的是5-7 我设的是12 也可以用 但是不知道 这会影响那方面?因为我词库一半以上是7个数以上的
0
末之未央
末之未央
@狮子的魂 我在EC_MIXED_WORD 内 增添了一些词 为什么只有红箭头的2个词对了,其他的完全没分
末之未央
末之未央
回复 @狮子的魂 : 好的 谢谢!
狮子的魂
狮子的魂
回复 @末之未央 : 中英组合词保证中文部分是一个JCK_WORDS中的词条即可,例如:拳皇OVA,保证CJK_WORDS词库中有“拳皇”即可!
末之未央
末之未央
@狮子的魂 已解决EC_MIXED_WORD类型的问题 ,但是 CE_MIXED_WORD不行了。。。。中+英的。。。。
末之未央
末之未央
CJK_WORDS 类型 完全没问题
0
末之未央
末之未央
@狮子的魂 发现一个问题 我不知道是不是bug   dic单例模式下  solr的多core 会随机1-2个core加载不了JcsegTokenizerFactory   

Caused by: org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] analyzer/tokenizer: Error instantiating class: org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory   


我用的jcseg最新的 solr 5.1 

0
末之未央
狮子的魂
狮子的魂
可以能是你的更改引起的,确认下你改的代码,不要出现单例中的lazyInitRice静态条件等。。。
0
颜朋
颜朋

在使用Solr 4.8 + Jcseg 1.93的时候,发现自动加载更新后的词库的功能不能使用,不知道是可能因为什么原因导致的呢?

现象:设置了properties中的autoload=1,polltime=30,然后在lexicon目录下的lex-autoload.todo中加上了需要自动更新的文件名lex-test.lex,在启动Solr(通过直接DOS下执行java -jar start.jar方式)后,在lex-test.lex文件中添加新的分词,保存以后,观察lex-autoload.todo文件的变化,但是1分钟以后发现还是没有改变,没有被清空,而新的分词也没有办法使用。


返回顶部
顶部