文档章节

solr4.7开发实践 4——拼音检索

一枚Sir
 一枚Sir
发布于 2014/05/06 16:43
字数 306
阅读 6408
收藏 7

        拼音检索的大致思路是这样的:

            ①将需要使用拼音检索的字段汇集到一个拼音分词字段里(我的拼音分词字段使用pinyin4j+NGram做的);

                加入两个jar包:pinyin4j-2.5.0.jar、pinyinAnalyzer.jar;

                schema.xml文件设置:

<field name="pinyin" type ="text_pinyin" indexed ="true" stored ="false" multiValued ="true"/>
<copyField source="name" dest="pinyin"/>
 <copyField source="author" dest="pinyin"/>
 <copyField source="region" dest="pinyin"/>
 <copyField source="theme" dest="pinyin"/> 
<!-- by michael: pinyin  -->
  <fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0"> 
     <analyzer type="index"> 
     <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/> 
     <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/> 
     <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" /> 
     <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="6" maxGram="20" /> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/> 
     <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/> 
     <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" /> 
     <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="6" maxGram="20" /> 
     </analyzer> 
  </fieldType>

        ②使用solrj进行拼音检索:

/**
 * @method: testPhoneticize
 * @Description: 拼音检索
 *    ??? 也会把不符合条件的检索出来
 *    (解决方法:把汉子和相应的拼音建立同义词)
 * @return void
 *
 * @author: ChenYW
 * @date 2014-4-16 下午01:44:57
 */
    public List<Map<String, String>> phoneticize(String pinyin){
  try {
   List<Map<String, String>> list = new ArrayList<Map<String, String>>();
   
   SolrQuery query = new SolrQuery();  
   query.set("q", "pinyin:"+pinyin);//高亮查询字段  
         
         QueryResponse qr=server.query(query);//执行查询  
         SolrDocumentList dlist=qr.getResults();  
         
         System.out.println("总数:"+dlist.getNumFound());
         Map<String, String> mapRe = null;
         for(SolrDocument sd:dlist){  
             mapRe = new HashMap<String, String>();
             mapRe.put("name", sd.getFieldValue("name").toString());
             mapRe.put("content", sd.getFieldValue("content").toString().substring(0,200));
             list.add(mapRe);
         }
         
         return list;
  } catch (SolrServerException e) {
   e.printStackTrace();
  }
  return null;
 }

© 著作权归作者所有

一枚Sir
粉丝 119
博文 209
码字总数 350904
作品 0
朝阳
架构师
私信 提问
加载中

评论(10)

光伟正
光伟正

引用来自“沼泽大树”的评论

能实现关键词高亮显示么?
高亮不难
沼泽大树
沼泽大树
能实现关键词高亮显示么?
沼泽大树
沼泽大树
能实现关键词高亮显示么?
j
junnex
楼主能提供一下pinyinAnalyzer.jar包?
zimmel
zimmel
楼主你好
根据你的配置后
我想用/select?q=zh搜出“中国”(此索引已建立)
还是搜不出来中文
蛋蛋的_忧伤

引用来自“蛋蛋的_忧伤”的评论

楼主 这个pinyinAnalyzer.jar是自己重新定义的分词器?能否分享一下?

引用来自“MrMichael”的评论

这个网上就有资源,我也是在网上下载的资源,由于咱们OSchina发的博客不能挂附件,所以没法分享给大家。

引用来自“蛋蛋的_忧伤”的评论

能发一下邮箱吗?fitchzhang@ivmall.com 有劳了,多谢!

引用来自“MrMichael”的评论

恩,发到你的邮箱了,请查收
已经收到了 感谢楼主开源精神
一枚Sir
一枚Sir 博主

引用来自“蛋蛋的_忧伤”的评论

楼主 这个pinyinAnalyzer.jar是自己重新定义的分词器?能否分享一下?

引用来自“MrMichael”的评论

这个网上就有资源,我也是在网上下载的资源,由于咱们OSchina发的博客不能挂附件,所以没法分享给大家。

引用来自“蛋蛋的_忧伤”的评论

能发一下邮箱吗?fitchzhang@ivmall.com 有劳了,多谢!
恩,发到你的邮箱了,请查收
蛋蛋的_忧伤

引用来自“蛋蛋的_忧伤”的评论

楼主 这个pinyinAnalyzer.jar是自己重新定义的分词器?能否分享一下?

引用来自“MrMichael”的评论

这个网上就有资源,我也是在网上下载的资源,由于咱们OSchina发的博客不能挂附件,所以没法分享给大家。
能发一下邮箱吗?fitchzhang@ivmall.com 有劳了,多谢!
一枚Sir
一枚Sir 博主

引用来自“蛋蛋的_忧伤”的评论

楼主 这个pinyinAnalyzer.jar是自己重新定义的分词器?能否分享一下?
这个网上就有资源,我也是在网上下载的资源,由于咱们OSchina发的博客不能挂附件,所以没法分享给大家。
蛋蛋的_忧伤
楼主 这个pinyinAnalyzer.jar是自己重新定义的分词器?能否分享一下?
solr4.7开发实践 6——拼写检查

①拼写检查不同于其他域,它在建立索引时需要分词,但是检索时不需要分词,所以要建立一个特殊的域,以供拼写检查: 在schema.xml文件里设置所需的拼写检查域都有哪些字段: <field name="s...

一枚Sir
2014/05/06
2.7K
6
汉语转拼音工具、新华字典API——两个支持Python的中文资源

整理 | Jane 出品 | AI科技大本营 【导读】平常为大家推荐的资源中,以英语语言占据大多数。今天 AI科技大本营特别要为大家推荐两个跟中文相关的资源工具。先简单介绍下这两个资源工具都是什...

AI科技大本营
2018/09/10
0
0
机器学习---学习首页

逐步完善中… 1.数学 偏差与方差 拉格朗日 核函数 凸优化 协方差矩阵 Hessian矩阵 CDF(累计分布函数) 高斯概率密度函数 中心极限定理 2.机器学习 Java 机器学习 工具 & 库 1.处理小数据效果...

绝黛雨儿
2015/09/29
844
0
2017机器学习系列高端培训——深度自然语言与智能(北京站)

本次培训主要针对企业技术开发人员,自然语言处理新晋从业人员,泛人工智能践行者。本课程将概述上述行业的发展现状与挑战,介绍机器学习深度学习等技术与自然语言处理的结合与应用,课程将着...

活动家
2017/08/24
159
0
2017机器学习系列高端培训——深度自然语言与智能(上海站)

本次培训主要针对企业技术开发人员,自然语言处理新晋从业人员,泛人工智能践行者。本课程将概述上述行业的发展现状与挑战,介绍机器学习深度学习等技术与自然语言处理的结合与应用,课程将着...

活动家
2017/08/24
5
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部