solrjava
① solr java怎么更新数据
:1、将解压包中的solr-4.7.1/dist/solr-4.7.1.war复制到tomcat_dir/webapps/目录槐态,并命名为solr.war。 2、将solr-4.7.1/example/lib/ext/目录铅燃源下的jar文件复制到tomcat/lib目录下,段扰将solr-4.7.1/example/resources/下的log4j.properties
② 教你使用solr搭建你的全文检索
Solr 是一个可供企业使用的 基于 Lucene 的开箱即用的搜索服务器 对Lucene不熟?那么建议先看看下面两篇文档
实战Lucene 第 部分 初识 Lucene lo lucene /
用Lucene加速Web搜索应用程序的开发 lucene /
一 solr介绍
solr是基于Lucene Java搜索库的企业级全文搜索引擎 目前是apache的一个项目 它的官方网址在 solr需要运行在一个servlet 容器里 例如tomcat solr在lucene的上层提供了一个基于HTTP/XML的Web Services 我们的应用需要通过这个服务与兄斗祥solr进行交互
二 solr安装和配置
关于solr的安装和配置 这里也有两篇非常好的文档 作者同时也是 Lucene Java 项目的提交人和发言人
使用Apache Solr实现更加灵巧的搜索 solr /l
solr /l
下面主要说说需要注意的地方
Solr的安装非常简单 下载solr的zip包后解压缩将dist目录下的war文件改名为solr war直接复制到tomcat 的webapps目录即可 注意一定要设置solr的主位置 有三种方法 我采用的是在tomcat里配置java p/env/solr/home的一个JNDI指向solr的主目录(example目录下) 建立/tomcat /conf/Catalina/localhost/solr xml文件
<Context docBase= D:/solr war debug= crossContext= true ><Environment name= solr/home type= java lang String value= D:/solr/solr override= true /></Context>
观察这销燃个指定的solr主位置 里面存在两个文件夹 conf和data 其中conf里存放了对solr而言最为重要的两个配置文件schema xml和solrconfig xml data则用于存放索引文件
schema xml主要包括types fields和其他的一些缺省设置
solrconfig xml用来配置Solr的一些系统属性 例如与索引和查询处理有关的一些常见的配置选项 以及缓存 扩展等等
上面的文档对这两个文件羡搏有比较详细的说明 非常容易上手 注意到schema xml里有一个
<uniqueKey>url</uniqueKey>
的配置 这里将url字段作为索引文档的唯一标识符 非常重要
三 加入中文分词
对全文检索而言 中文分词非常的重要 这里采用了qieqie庖丁分词(非常不错 )) 集成非常的容易 我下载的是 alpha 版本 其中它支持最多切分和按最大切分 创建自己的一个中文TokenizerFactory继承自solr的BaseTokenizerFactory
/** * Created by IntelliJ IDEA * User: ronghao * Date: * Time: : : * 中文切词 对庖丁切词的封装 */ public class ChineseTokenizerFactory extends BaseTokenizerFactory { /** * 最多切分 默认模式 */ public static final String MOST_WORDS_MODE = most words ; /** * 按最大切分 */ public static final String MAX_WORD_LENGTH_MODE = max word length ; private String mode = null; public void setMode(String mode) { if (mode==null||MOST_WORDS_MODE equalsIgnoreCase(mode) || default equalsIgnoreCase(mode)) { this mode=MOST_WORDS_MODE; } else if (MAX_WORD_LENGTH_MODE equalsIgnoreCase(mode)) { this mode=MAX_WORD_LENGTH_MODE; } else { throw new IllegalArgumentException( 不合法的分析器Mode 参数设置: + mode); } } @Override public void init(Map args) { super init(args); setMode(args get( mode )); } public TokenStream create(Reader input) { return new PaodingTokenizer(input PaodingMaker make() createTokenCollector()); } private TokenCollector createTokenCollector() { if( MOST_WORDS_MODE equals(mode)) return new MostWordsTokenCollector(); if( MAX_WORD_LENGTH_MODE equals(mode)) return new MaxWordLengthTokenCollector(); throw new Error( never happened ); } }
在schema xml的字段text配置里加入该分词器
<fieldtype name= text class= solr TextField positionIncrementGap= >
< *** yzer type= index >
<tokenizer class= ronghao fulltextsearch *** yzer ChineseTokenizerFactory mode= most words /><filter class= solr StopFilterFactory ignoreCase= true words= stopwords txt />
<filter class= solr WordDelimiterFilterFactory generateWordParts= generateNumberParts= catenateWords= catenateNumbers= catenateAll= />
<filter class= solr LowerCaseFilterFactory />
<filter class= solr />
</ *** yzer>
< *** yzer type= query >
<tokenizer class= ronghao fulltextsearch *** yzer ChineseTokenizerFactory mode= most words />
<filter class= solr SynonymFilterFactory synonyms= synonyms txt ignoreCase= true expand= true />
<filter class= solr StopFilterFactory ignoreCase= true words= stopwords txt />
<filter class= solr WordDelimiterFilterFactory generateWordParts= generateNumberParts= catenateWords= catenateNumbers= catenateAll= />
<filter class= solr LowerCaseFilterFactory />
<filter class= solr />
</ *** yzer>
</fieldtype>
完成后重启tomcat 即可在
体验到庖丁的中文分词 注意要将paoding *** ysis jar复制到solr的lib下 注意修改jar包里字典的home
四 与自己应用进行集成
Solr安装完毕 现在可以将自己的应用与solr集成 其实过程非常的简单 应用增加数据——>根据配置的字段构建add的xml文档——>post至solr/update
应用删除数据à根据配置的索引文档唯一标识符构建delete的xml文档——>post至solr/update
检索数据à构建查询xml—>get至/solr/select/——>对solr返回的xml进行处理——>页面展现
具体的xml格式可以在solr网站找到 另外就是solr支持高亮显示 非常方便
关于中文 solr内核支持UTF 编码 所以在tomcat里的server xml需要进行配置
<Connector port= maxHttpHeaderSize= URIEncoding= UTF …/>
另外 向solr Post请求的时候需要转为utf 编码 对solr 返回的查询结果也需要进行一次utf 的转码 检索数据时对查询的关键字也需要转码 然后用 + 连接
String[] array = StringUtils split(query null ); for (String str : array) { result = result + URLEncoder encode(str UTF ) + + ; }
lishixin/Article/program/Java/hx/201311/25984
③ 什么是solr
SOLR 搜辣 是一款 Apache软件基金会开发的企业搜索服务器软件。
Solr是用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)的一个独立的全文搜索服务器岩银。Solr 强大的外部配置功能使得无需进行Java编码碰嫌,便可对其进行调整以适应多种类型的应用程序。Solr有一个插件架构,以支持粗吵宴更多的高级定制。
④ java怎么调用solr查询接口
solr官方网站 http://lucene.apache.org/solr/
下面是一个例子:
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.params.ModifiableSolrParams;
import java.net.MalformedURLException;
public class Main {
public static void main(String[] args) throws MalformedURLException, SolrServerException {
SolrServer server = new CommonsHttpSolrServer("http://localhost:8080/solr");
ModifiableSolrParams params = new ModifiableSolrParams();
// 查询关键词
params.set("q", "亏码裂2010");
// 分页,,start=0就是从0开始,,rows=5当前返回5条记录,,,第二页就是变化start这个值为5就可以了。
params.set("start", 0);
params.set("rows", 5);
// 排序,,如果按照id 排序,,那么将score desc 改成 id desc(or asc)
params.set("sort", "score desc");
//销闭 返回信息 * 为全部模键 这里是全部加上score,如果不加下面就不能使用score
params.set("fl", "*,score");
QueryResponse response = server.query(params);
// 搜索得到的结果数
System.out.println("Find:"+ response.getResults().getNumFound()+"\n\n");
// 输出结果
for(SolrDocument doc:response.getResults())
{
System.out.println("id: " + doc.getFieldValue("id").toString());
System.out.println("title: " + doc.getFieldValue("title").toString()+"\n");
}
}
}
⑤ Javaweb中redis和solr哪个性能高,感觉这两个留一个就可以了
这2个不是一类的东西啊。主要看你的需求。
⑥ java中搜索插件叫什么
Java插件是一种可以改变Java应用程序的行为的软件。它们可以为程序提供额外的功能,如自动完成,代码补全,错误检测,瞎基代码格式化,注释,调试和跟踪等。
Java插件可以在开发工具中使用磨灶谨,例如Eclipse,NetBeans和IntelliJ IDEA。它辩州们可以改变应用程序的行为,使Java开发人员能够更轻松,更有效地开发Java应用程序。
Java插件可以为您的应用程序提供额外的功能,可以减少您的开发时间,并可以使您的应用程序更加强大。它们可以帮助您更轻松地创建高质量的Java应用程序,从而节省时间和金钱。
⑦ java 后端怎么写solr的导入数据
SolrQuery solrQuery = new SolrQuery(); Map map = new HashMap(); map.put(FacetParams.FACET_DATE, "链祥manufacturedate_dt"棚轮搏); map.put(FacetParams.FACET_DATE_START,"桐瞎2004-01-01T00:00:00Z"); map.put(FacetParams.FACET_DATE_END,"2010-01-01...
⑧ solr 使用java jdbc查询
空指针,有这么几种情况,一般是你进行查询的时候传递的参数有问题或者是查询回来的返回值跟实体映射不对,打断点调试一下,一步一橡启步看总能租如世找弊肢到问题
⑨ 用java操作solr时候,commit的时候有没有返回值来表示插入成功或者失败
commit有返回值的
UpdateResponseupdateResponse=solrServer.commit();
intstatus=updateResponse.getStatus()
这里的 status 可以贺裤拿到操作执行的状态 ,0表示 成功
if(status!=0){
log.error("Somehorribleerrorhasoccurred,statusis:"+status);
}
2.
try{
=solrServer.add(solrInputDocuments);
UpdateResponseupdateResponse=solrServer.commit();
intstatus=updateResponse.getStatus();
}catch(Exceptione){
//Dosomething
}
你还升敬可以通过 异常来判断 是否吵拍慎执行成功