solr版本5.5.5:
一、solr5.5.5可以独立部署,使用默认的Jetty启动
3、启动服务器: bin/solr start
4、验证服务是否启动: 在浏览器中输入:http://IP:8983/solr/ 端口默认是8983 要想修改的话,启动的时候加上参数 -p 8983
5、创建core: bin/solr create -c mycore
5、添加中文分词器: 这里采用的是IK分词器,添加分词器是刚刚创建的core中添加: 位置:${PATH}\server\solr\mycore\conf\managed-schema 添加下面的内容:
并且把jar包添加到:(注意这里的jar一定要版本对应) ${PATH}\server\solr-webapp\webapp\WEB-INF\lib 目录下
验证IK是否安装成功。没有安装成功的话会提示mycore 的core有问题。也可以查看solr的日志。
重启服务器: bin/solr restart -p 8983 注意重启要指定端口要不然报错
然后看看分词效果:
效果还是不错的。
6、添加解析word文档的requestHandler,在${PATH}\server\solr\mycore\conf\solrconfig.xml 添加下面内容:
last_modified
ignored_
yyyy-MM-dd
7、配置索引的域:(这里要根据自己的需求修改) 修改动态域:
二、java客户端:
1、配置java客户端SolrJ: 如果使用maven参考:http://blog.csdn.net/xiaokang123456kao/article/details/72846591 下面介绍添加jar包的方式: 在${PATH}\dist\solrj-lib下的jar,除了这个下面的所有jar还要包括:log4j的包和slf4j和log4j的中间包。${PATH}\server\lib\ext 下面有这两个。然后再项目中添加log4j.properties文件。这个在${PATH}\server\resources中有,直接拷贝到项目中就可以。
2、哦了,写测试代码:
package com.boco.solr.mycore;
import java.io.File;
import java.io.IOException;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
public class SolrTest {
private static String URL = "http://127.0.0.1:8983/solr/mycore";
public static void create() {
// 链接到本地的core1核心文件
HttpSolrClient server = null;
try {
server = new HttpSolrClient(URL);
ContentStreamUpdateRequest up = new ContentStreamUpdateRequest(
"/update/extract");
up.addFile(new File("D:/操作手册模版(初稿).doc"),"application/word");
up.setParam("literal.id", "p_12");//使用预案的ID
up.setParam("fmap.content", "attr_content");
up.setParam("fmap.content_type", "documentFormat");
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
server.request(up);
server.commit();
} catch (SolrServerException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(server != null) {
try {
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void query() {
HttpSolrClient server = null;
try {
server = new HttpSolrClient(URL);
// 定义查询内容 * 代表查询所有 这个是基于结果集
SolrQuery query = new SolrQuery("于培海"); // 定义查询内容
//query.setStart(0);// 起始页
//query.setRows(4);// 每页显示数量
query.setParam("df", "attr_content");
query.setParam("fl","id");
QueryResponse rsp = server.query(query);
SolrDocumentList results = rsp.getResults();
System.out.println("-----------------------------------------");
System.out.println(results.getNumFound());// 查询总条数
for (SolrDocument doc : results) {
System.out.println(doc.get("id"));
}
System.out.println("-----------------------------------------");
} catch (SolrServerException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
try {
create();
query();
} catch (Exception e) {
e.printStackTrace();
}
}
}