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下文要修改)。java

建立成功後若是仍是顯示如圖(前提是建立成功!) 
這裏寫圖片描述
重啓solr 先 
solr stop -all 再 solr start。或重啓tomcat 
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
五.配置字段 
schema.xml conf文件夾下配置你的數據字段 
這裏寫圖片描述
這裏寫圖片描述node

配置完畢後重啓。linux

六 分詞 
注意:配置分詞以前清除以前的數據 
配置分詞總的來講: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 
這裏寫圖片描述web

這裏寫圖片描述
重啓。 
七.java 中調用 
1.jar包 
這裏寫圖片描述 
還會用到org.slf4j,commons-loggingapache

2.具體代碼 
`package com.wm.project.test;windows

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

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/「;app

/**
 * 往索引庫添加文檔
 * 
 * @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");
}

}`webapp

相關文章
相關標籤/搜索