使用Solrj 获取语句分词结果的代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.request.FieldAnalysisRequest;
import org.apache.solr.client.solrj.response.AnalysisResponseBase.AnalysisPhase;
import org.apache.solr.client.solrj.response.AnalysisResponseBase.TokenInfo;
import org.apache.solr.client.solrj.response.FieldAnalysisResponse;
import base.util.ConfigUtil;
public class SolrService {
private static Logger log = Logger.getLogger(SolrService.class);
private static HttpSolrServer solrServer;
static {
solrServer = new HttpSolrServer(ConfigUtil.getValue("solr.url"));
solrServer.setConnectionTimeout(5000);
}
/**
* 给指定的语句分词。
*
* @param sentence 被分词的语句
* @return 分词结果
*/
public static List<String> getAnalysis(String sentence) {
FieldAnalysisRequest request = new FieldAnalysisRequest(
"/analysis/field");
request.addFieldName("title");// 字段名,随便指定一个支持中文分词的字段
request.setFieldValue("");// 字段值,可以为空字符串,但是需要显式指定此参数
request.setQuery(sentence);
FieldAnalysisResponse response = null;
try {
response = request.process(solrServer);
} catch (Exception e) {
log.error("获取查询语句的分词时遇到错误", e);
}
List<String> results = new ArrayList<String>();
Iterator<AnalysisPhase> it = response.getFieldNameAnalysis("title")
.getQueryPhases().iterator();
while(it.hasNext()) {
AnalysisPhase pharse = (AnalysisPhase)it.next();
List<TokenInfo> list = pharse.getTokens();
for (TokenInfo info : list) {
results.add(info.getText());
}
}
return results;
}
}
@Test
public void getAnalysis() {
List<String> results = SolrService.getAnalysis("DevNote与大家分享开发实践经验");
for (String word : results) {
System.out.println(word);
}
}
运行效果:
devnote
与
大家
分享
开发
实践经验
使用Solrj 获取语句分词结果的代码的更多相关文章
- PHP 获取当天 凌晨 时间戳常用代码
echo strtotime(date('Y-m-d')); 获取明天凌晨的时间戳代码:echo strtotime(date('Y-m-d',strtotime('+1 day'))); 附上测试代 ...
- 分享:PHP获取MAC地址的实现代码
原文地址:http://www.jbxue.com/article/12635.html发布:thatboy 来源:Net [大 中 小] 分享一例php取得机器mac地址的代码,学习下p ...
- jq获取表单值与赋值代码
jq获取表单值与赋值代码 jq获取表单值与赋值代码 $("#keyword")[0].value = ""; /*获得TEXT.AREATEXT的值*/ var ...
- go get获取gitlab私有仓库的代码
目录 目录 1.Gitlab的搭建 2.如何通过go get,获取Gitlab的代码 目录 1.Gitlab的搭建 在上一篇文章中,已经介绍了如何搭建Gitlab Https服务<Nginx ...
- easyui获取正在编辑行的代码
easyui获取正在编辑行的代码……没这个真不知道怎么搞0.0可能这问题还要弄半天……卧槽 ...等于是笔记下来 : var ed = $("dg").datagrid('get ...
- JSP 获取真实IP地址的代码
[转载]JSP 获取真实IP地址的代码 JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. ...
- 【转载】JSP 获取真实IP地址的代码
JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. 但是在通过了 Apache,Squid ...
- jQuery中使用Ajax获取JSON格式数据示例代码
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...
- 在JAVA中如何获取当前源文件名以及代码的行号
在最近经历中,遇见了这样一个问题,如何获取当前源文件名以及代码的行号,只是了解到C语言有预定义宏__FILE__.__LINE__,它们在预处理的时候都已经确定好了,但是在JAVA中应该怎么获取输出呢 ...
随机推荐
- c#与C++类型转换网摘
转载自 C++和C#转换 https://www.cnblogs.com/zjoch/p/4147182.html c#与C++类型转换,网摘 //c++:HANDLE(void *) ...
- linux之 sed命令
1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区 ...
- 什么是 PWA?
出处:https://segmentfault.com/a/1190000012353473
- 手动制作openstack windows镜像
https://docs.openstack.org/image-guide/windows-image.html 这里以 windows 2008为例: 准备工作: 1准备好windows 2008 ...
- Python问题汇总
1.dict is not callable tree是一个字典类型. tree("left") -> tree["left"] 2.list ind ...
- 关于Bagging
Bagging分为两种:Bagging和Pasting,前者是概率中的放回随机采样,后者是不放回随机采样:默认是放回采样随机:设置bootstrap=False即设置为不放回采样:默认bootstra ...
- 深入理解ASP.NET MVC(7)
系列目录 Action的定位 再次回到Controller的ExecuteCore方法,回到action调用的入口: 1 if (!ActionInvoker.InvokeAction(Control ...
- HDP对应的各组件的版本信息
截至目前最新的HDP版本为2.6: https://zh.hortonworks.com/products/data-platforms/hdp/ 如果版本更新,可采用以下步骤: 首先访问horton ...
- ML: 聚类算法R包 - 密度聚类
密度聚类 fpc::dbscan fpc::dbscan DBSCAN核心思想:如果一个点,在距它Eps的范围内有不少于MinPts个点,则该点就是核心点.核心和它Eps范围内的邻居形成一个簇.在一个 ...
- Android adb 模拟滑动 按键 点击事件
模拟事件全部是通过input命令来实现的,首先看一下input命令的使用: usage: input ... input text <string> input keyeven ...