mmseg4j-1.8 中的 MMSeg4jHandler

 

mmseg4j-1.8 中的 MMSeg4jHandler

发表于:2009年10月18日 | 分类:mmseg4j | 标签: handler, mmseg4j, solr | views(1,833)

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原文出处, 即下面的声明.

原文出处:http://blog.chenlb.com/2009/10/mmseg4j-handler.html

mmseg4j 1.8 中有词库变化检测功能,新加载词库后,很有可能此时的分词(搜索时)与索引不对应了。所以要有个机制让重新做索引。

这里使用最简单的方式,就是被动式的加载词库。由外围的程序去决定什么时候更新词库,然后也由外围的程序决定重做索引与否。比如可以写个 shell 脚本放到 crontab 里。

按solr 的理念——用 url 方式去通知 mmseg4j 加载词库。这个任务交出 MMseg4jHandler 去做。

参数:

  • dicPath 是指定词库的目录,特性与MMSegTokenizerFactory中的dicPath一样(相对目录是,是相对 solr.home)。
  • check 是指是否检测词库,其值是true 或 on。
  • reload 是否尝试加载词库,其值是 true 或 on。此值为 true,会忽视 check 参数。

solrconfig.xml:

1.  <requestHandler name="/mmseg4j" class="com.chenlb.mmseg4j.solr.MMseg4jHandler" >  

2.      <lst name="defaults">  

3.          <str name="dicPath">dic</str>  

4.      </lst>  

5.  </requestHandler>  

  <requestHandler name="/mmseg4j"class="com.chenlb.mmseg4j.solr.MMseg4jHandler" >

    <lst name="defaults">

      <str name="dicPath">dic</str>

    </lst>

  </requestHandler>

然后可以用 http://localhost:8080/solr-1.4/mmseg4j/?reload=true 去尝试加载(注意:内存空间要有2倍词库大小的可能空间。一个词库可可能 50M)。

返回结果如下:

1.  <?xml version="1.0" encoding="UTF-8" ?>  

2.  <response>    

3.    

4.  <lst name="responseHeader">  

5.   <int name="status">0</int>  

6.   <int name="QTime">0</int>  

7.  </lst>  

8.  <lst name="result">  

9.   <str name="dicPath">java.net.URI:file:/E:/workspace/solr/example/solr-mmseg4j/dic/</str>  

10.  <bool name="changed">true</bool>  

11.  <bool name="reloaded">true</bool>  

12. </lst>  

13. </response>   

<?xmlversion="1.0" encoding="UTF-8" ?>

<response>

 

<lstname="responseHeader">

 <intname="status">0</int>

 <intname="QTime">0</int>

</lst>

<lstname="result">

 <str name="dicPath">java.net.URI:file:/E:/workspace/solr/example/solr-mmseg4j/dic/</str>

 <boolname="changed">true</bool>

 <boolname="reloaded">true</bool>

</lst>

</response>

只要检测 /response/lst[@name='result']/bool[@name='reloaded'] 的值就可以决定是否要重做索引了。

注意:dicPath 参数是 MMSegTokenizerFactory 里指定的 dicPath 才有意义。

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值