【Solr4.7.0学习笔记】系列之一:ik智能分词(需要导入lucene4.7jar包)
来源:互联网 发布:b站小学生知乎 编辑:程序博客网 时间:2024/06/05 09:22
/**
* ik分词
* @param userName
* @param i
* @return
*/
public List<UserInfo> searchUserInfoList(String userName,int i){
//智能分词-----------------------
CharTermAttribute ta= null;
String params= "";
try {
IKAnalyzer analyzer = new IKAnalyzer();
//使用智能分词
analyzer.setUseSmart( true);
TokenStream Stream = analyzer.tokenStream("sName" , new StringReader(userName));
ta=Stream.addAttribute(CharTermAttribute. class);
Stream.reset();
for (;Stream.incrementToken(); ) {
//userName +="sName:"+ ta+"+";//不可以
//userName +="sName:"+ ta+" ";//可以
params += "sName:"+ta+" OR " ;
}
Stream.end();
} catch (IOException e1) {
e1.printStackTrace();
}
//-----------------------------end
List<UserInfo> list= new ArrayList<UserInfo>();
UserInfo user= null;
HttpSolrServer server=SolrServer.getInstance ().getServer ();
SolrQuery query= new SolrQuery();
String para= "";
if(params != null){
if (params.lastIndexOf("OR" ) != -1)
params= params.substring(0,params.lastIndexOf("OR" ));
para=params;
}
query.addSort( "sNo",ORDER.asc );
//query.setQuery("sName:"+userName);
query.set( "q",para);//说明:set比setQuery的范围大一些,如果是 ik分词建议用set
query.setStart(i); //设置"其实位置":表示从结果集的第几条数据开始显示。默认下标是0开始
query.setRows(10); //设置每页显示的行数
//设置高亮显示---------------------
query.setHighlight( true);//开启高亮功能
query.addHighlightField( "sName");//高亮字段
query.setHighlightSimplePre( "<font color=\"red\">"); //渲染标签
query.setHighlightSimplePost( "</font>"); //渲染标签
QueryResponse response;
try {
response=server.query(query);
SolrDocumentList dlist=response.getResults();
//第一个Map的键是文档的ID,第二个Map的键是高亮显示的字段名
Map<String, Map<String, List<String>>> map = response.getHighlighting();
for(int j=0;j<dlist.size();j++){
user= new UserInfo();
SolrDocument d=dlist.get(j); //获取每一个document
String sName2= this.toString (( map.get(((Integer)d.get("sNo" )).toString())).get("sName")) ;
user.setSname(sName2);
list.add(user);
}
} catch (SolrServerException e) {
e.printStackTrace();
}
return list;
}
效果:
1 0
- 【Solr4.7.0学习笔记】系列之一:ik智能分词(需要导入lucene4.7jar包)
- solr学习(4.1)-solr4.7中文分词器(ik-analyzer)配置
- solr4.7中文分词器(ik-analyzer)配置
- solr4.7中文分词器(ik-analyzer)配置
- solr4.7中文分词器(ik-analyzer)配置
- solr4.7中文分词器(ik-analyzer)配置
- solr4.7中文分词器(ik-analyzer)配置
- solr4.7中文分词器(ik-analyzer)配置
- 【Solr4.7.0学习笔记】系列之一:Facet分组查询
- 【Solr4.7.0学习笔记】系列之一:solr 竞价排名
- 解决solr4.x搭建ik不能智能分词
- 【Solr4.7.0学习笔记】系列之一:Solrj4.7增删改查+分页
- IK中文分词包导入项目步骤
- 【Solr4.7.0学习笔记】系列之一: java程序里面,如何用submit(非异步)访问solr程序?
- 学习struts2需要注意(jar包导入)
- 【Solr4.7.0学习笔记】系列之一:Tomcat7中搭建Solr 4.x(4.7.0)
- 【Solr4.7.0学习笔记】系列之一:我的第一个Solr程序
- 【Solr4.7.0学习笔记】系列之一:如何让solr和java程序整合
- Quartz.NET的管理工具
- Java做成Zip文件,Java实现压缩文件
- IOS UITableView Section下拉列表实现
- 程序员学习能力提升三要素
- ios 平铺图片
- 【Solr4.7.0学习笔记】系列之一:ik智能分词(需要导入lucene4.7jar包)
- 获取Ipnone当前的系统版本号
- C++一些宏定义
- 25条提高iOS App性能的技巧和诀窍
- 「C++」一个brainfuck 语言解释器
- matlab 的直方图均衡化
- Oracle Sequences和union同时使用
- QStackedWidget及QStackedLayout使用方法
- 通用工厂类Factory(C++实现)