`

Solr 获取分词

阅读更多

个人博客:http://demi-panda.com

 

 

Solr 1.4 有了对字段的分词。FieldAnalysisRequestHandler 可以对某个字段或字段类型的分词器对查询串取到分词数据。

用 solr 的默认配置,如 solr 1.4.0。

我用 mmseg4j 为例。在 solr.root/example/solr/conf/schema.xml 的 types 元素内加:

  1. <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">  
  2.   <analyzer>  
  3.     <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"/>  
  4.   </analyzer>  
  5. </fieldType>  

把 IKAnalyzer -3.2.8.jar 放到 solr.home/example/solr/lib,没有 lib 目录,创建一个。更多关于 solr 中使用 mmseg4j 的内容请看:solr 中文分词  IKAnalyzer  使用例子。

如:“北京烤鸭
http://localhost:6091/solr-web-shop/shop/analysis/field?q=北京烤鸭&analysis.fieldtype=text&indent=on&wt=json


{

  • responseHeader : {
    • status : 0 ,
    • QTime : 3
    },
  • analysis : {
    • field_types : {
      • text : {
        • query : [
          • "org.wltea.analyzer.lucene.IKTokenizer" ,
          • [
            • {
              • text : "北京烤鸭" ,
              • start : 0 ,
              • end : 4 ,
              • position : 1 ,
              • positionHistory : [
                • 1
                ],
              • type : "word"
              },
            • {
              • text : "北京烤" ,
              • start : 0 ,
              • end : 3 ,
              • position : 2 ,
              • positionHistory : [
                • 2
                ],
              • type : "word"
              },
            • {
              • text : "北京" ,
              • start : 0 ,
              • end : 2 ,
              • position : 3 ,
              • positionHistory : [
                • 3
                ],
              • type : "word"
              },
            • {
              • text : "烤鸭" ,
              • start : 2 ,
              • end : 4 ,
              • position : 4 ,
              • positionHistory : [
                • 4
                ],
              • type : "word"
              }
            ],
          • "org.apache.lucene.analysis.synonym.SynonymFilter" ,
          • "org.apache.lucene.analysis.StopFilter" ,
          • "org.apache.lucene.analysis.LowerCaseFilter" ,
          • "org.apache.solr.analysis.RemoveDuplicatesTokenFilter" ,
          ]
        }
      },
    • field_names : { }
    }

}


代码实现:

 

public static void main(String[] args) throws MalformedURLException, SolrServerException, IOException {
    CommonsHttpSolrServer solrServer = new CommonsHttpSolrServer("http://localhost:6091/solr-web-shop/shop");
    
    FieldAnalysisRequest request = new FieldAnalysisRequest("/analysis/field");
    request.addFieldName("shopName");
    request.setFieldValue("text");
    request.setQuery("北京烤鸭");
    FieldAnalysisResponse response = request.process(solrServer);
    System.out.println(response.toString());
    Iterator it = response.getFieldNameAnalysis("shopName").getQueryPhases().iterator();
    while(it.hasNext()) {
      AnalysisPhase pharse = (AnalysisPhase)it.next();
      List<TokenInfo> list = pharse.getTokens();
      for (TokenInfo info : list) {
        
      System.out.println(" text : "+ info.getText());
      }
      
    }
  }
   

 

分享到:
评论

相关推荐

    ik4solr4.3:ik分词器for Solr4.3,支持4.4,二进制不用修改也支持4.6,不放心可以改下POM中的依赖

    支持从solr自己的环境中获取自定义词典(使用solr的ResourceLoader,只需要把字典文件放到对应索引的conf目录里) 增加一个定时更新类 在IK中不建议用smart分词,因为它并不怎么准,ansj的分词效果明显更好。 这是一...

    魂动罗java源码-jcseg:一个开源的分词器,增加同义词优化

    jcseg是使用Java开发的一个开源中文分词器,使用流行的mmseg算法实现,并且提供了最高版本的lucene-4.x和最高版本solr-4.x的分词接口. 1。目前最高版本:jcseg-1.9.2。兼容最高版本lucene-4.x和最高版本solr-4.x 2...

    ElasticSearch企业级架构高阶视频教程.zip

    课时08:ik分词器插件从mysql中定时获取扩展词停顿词 课时09:ik分词器扩展词和停顿词动态加载演示 课时10:ik分词器获取扩展词后的使用 课时11:创建产品表加上ik分词器,导入单个文档 课时12:实战es的java客户端 ...

    黑马品优购项目

    搜索:solr集群(solrCloud),配合zookeeper搭建, 使用spring-data-solor 缓存:redis集群,使用spring-data-redis 图片存储:fastDFS集群 网页静态化:freemarker 单点登录:cas 权限管理:SpringSecurity, 跨域...

    百度云盘 pdf《大数据架构和算法实现之路:电商系统的技术实战》百度云盘-带标签目录

    1.6.2 中文分词 ……………….. 18 1.6.3 使用 R进行朴素贝叶斯分类… 22 朴素贝 叶斯分类..... . .…......... 39 1.6.6 多机环境使用 Mahout 运行 朴素贝叶斯分类…..........…… 47 1.7 更多的思考...

    java开源包1

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包11

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包2

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包3

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包6

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包5

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包10

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包4

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包8

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包7

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包9

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包101

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    Java资源包01

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    JAVA上百实例源码以及开源项目源代码

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

Global site tag (gtag.js) - Google Analytics