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
}
你還升敬可以通過 異常來判斷 是否吵拍慎執行成功