apache solr 5.0 安装部署+JAVA 调用

一.下载 solr 5.0 地址:http://archive.apache.org/dist/lucene/solr/5.0.0/solr-5.0.0.zip
二.解压
三.启动solr
启动solr有两种方式
1.直接启动solr
windows 打开命令行切换solr-5.0.0\bin 文件夹 执行 solr start 启动。 (solr stop -all 关闭命令)
linux 系统 直接切换solr-5.0.0\bin 文件夹 执行 solr star
启动完毕后在地址栏输入 http://localhost:8983/solr
2.tomcat启动
1)直接将solr-5.0.0\server\webapps 文件夹下的 solr.war (解压下面要修改里面内容)放到tomcat 下
2)将solr-5.0.0\server\lib\ext jar 包复制到WEB-INF lib下面,否则提示缺少jar 包
3)新建文件夹solrHome 路径随便
配置web.xml (WEB-INF目录)
这里写图片描述
4)将solr-5.0.0\server\solr文件夹下所有的文件复制到solrHome
5)启动tomcat http://localhost:8080/solr 这里的端口是你tomcat 的端口。
四.创建core
这里写图片描述
文字说明:(如果图片没看懂看文字)
将solr-5.0.0\server\solr\configsets\sample_techproducts_configs 的conf 文件夹复制到指定目录下(这里面有个schema.xml下文要修改)。

创建成功后如果还是显示如图(前提是创建成功!)
这里写图片描述
重启solr 先
solr stop -all 再 solr start。或重启tomcat
这里写图片描述
这里写图片描述
这里写图片描述
五.配置字段
schema.xml conf文件夹下配置你的数据字段
这里写图片描述
这里写图片描述

配置完毕后重启。

六 分词
注意:配置分词之前清除之前的数据
配置分词总的来说:1.导入jar包,2.配置文件。
1.导入jar包
地址:http://download.csdn.net/detail/qq_28601235/9854334
将两个jar包导入 1)如果你用tomcat启动直接把jar放到 webapps/sole下
WEB-INF/lib下面,2)如果是直接启动的solr-5.0.0\server\solr-webapp\webapp\WEB-INF\lib
2.
配置
增加fieldType
这里写图片描述

这里写图片描述
重启。
七.java 中调用
1.jar包
这里写图片描述
还会用到org.slf4j,commons-logging

2.具体代码
`package com.wm.project.test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

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.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class SolrJTest {
// 指定solr服务器的地址
private final static String SOLR_URL = “http://localhost:8983/solr/“;

/**
 * 往索引库添加文档
 * 
 * @throws IOException
 * @throws SolrServerException
 */
public void addDoc(Map<String, Object> map, String coreName)
        throws SolrServerException, IOException {
    // 构造一篇文档
    SolrInputDocument document = new SolrInputDocument();
    for (String key : map.keySet()) {
        // 往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
        document.addField(key, map.get(key));
    }
    // 获得一个solr服务端的请求,去提交 ,选择具体的某一个solr core
    HttpSolrClient solr = new HttpSolrClient(SOLR_URL + coreName);
    solr.add(document);
    solr.commit();
    solr.close();
}

/**
 * 根据id从索引库删除文档
 */
public void deleteDocumentById(String id, String coreName) throws Exception {
    // 选择具体的某一个solr core
    HttpSolrClient server = new HttpSolrClient(SOLR_URL + coreName);
    // 删除文档
    server.deleteById(id);
    // 删除所有的索引
    // solr.deleteByQuery("*:*");
    // 提交修改
    server.commit();
    server.close();
}

public void deleteAllDocument(String coreName) throws Exception {
    // 选择具体的某一个solr core
    HttpSolrClient server = new HttpSolrClient(SOLR_URL + coreName);
    // 删除所有的索引
    server.deleteByQuery("*:*");
    // 提交修改
    server.commit();
    server.close();
}

public void querySolr(String coreName) throws Exception {
    HttpSolrClient solrServer = new HttpSolrClient(SOLR_URL + coreName);
    SolrQuery query = new SolrQuery();
    // query.set("q", "*:*");// 参数q 查询所有
    query.set("q", "name:好");// 相关查询,比如某条数据某个字段含有周、星、驰三个字 将会查询出来
                                // ,这个作用适用于联想查询
    // 参数df,给query设置默认搜索域
    // query.set("df", "name");
    // 参数sort,设置返回结果的排序规则
    query.setSort("id", SolrQuery.ORDER.desc);
    // 设置分页参数
    query.setStart(0);
    query.setRows(10);// 每一页多少值
    // 参数hl,设置高亮
    query.setHighlight(true);
    // 设置高亮的字段
    query.addHighlightField("name");
    // 设置高亮的样式
    query.setHighlightSimplePre("<font color='red'>");
    query.setHighlightSimplePost("</font>");
    // 获取查询结果
    QueryResponse response = solrServer.query(query);
    // 两种结果获取:得到文档集合或者实体对象
    // 查询得到文档的集合
    SolrDocumentList solrDocumentList = response.getResults();
    System.out.println("通过文档集合获取查询的结果");
    System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound());
    // 遍历列表
    for (SolrDocument doc : solrDocumentList) {
        System.out.println("id:" + doc.get("id") + "   name:"
                + doc.get("name") + "    description:"
                + doc.get("description"));
    }

}


public static void main(String[] args) throws Exception {
    SolrJTest solr = new SolrJTest();
    // solr.createSolrServer();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", 999999999);
    map.put("name", "好的");
    map.put("author", "WM");
    // solr.addDoc(map, "new_core");
    //solr.deleteAllDocument("new_core");
    // solr.querySolr("new_core");
}

}`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值