solr7.4.0+mysql+solrj(简而优美)
目錄:
1 solr7部署+創建核心
2 solr mysql 連接
2.1 導入相關 jar包
2.2 配置連接信息
2.3 配置中文分析器
3 solrj JAVA客戶端應用
3.1 solrj 構建和運行
3.2 solrj 應用(數據的 增、刪、改、查)
3.3 solrj JavaBean 整合應用
?
1 solr7部署+創建核心
solr7需要java8環境,且需要在環境變量中添加 JAVA_HOME變量。
solr有兩種啟動模式:
獨立模式:適用于數據規模不大的場景
云模式:適用于數據規模大,高可靠、高可用、高并發的場景,基于zookeeper中間件
獨立模式是以 (core/核心) 來管理,云模式是以(collection/集合)來管理。
本教程使用獨立模式,請到apache官網下載壓縮包windows版,solr-7.4.0.zip / 壓縮到本地
cd solr-7.4.0/bin/? 常用命令:
solr.cmd start? ? 啟動 默認端口:8983
solr.cmd stop -all? 停止??
solr.cmd create -c?[options]? 創建核心
solr.cmd status 運行狀態
首先啟動solr? 執行命令?solr.cmd start? 并在瀏覽器下能訪問到下圖所示則表示訪問成功
?
?然后創建核心 ,這里我的核心名字叫bless? ?solr.cmd start -c bless 。下圖表示創建成功
?
新創建core\核心的目錄位置
?
?
2 solr mysql 連接?
2.1 導入相關 jar包
2.1.1? 下載 mysql 驅動包:mysql-connector-java-x.x.x.jar
2.1.2? 將 mysql 驅動包導入 solr :將下載下來的?mysql-connector-java-x.x.x.jar 拷貝到 solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib 下;
2.1.3? 將solr{home}\dist目錄下的:solr-dataimporthandler-7.4.0.jar和solr-dataimporthandler-extras-7.4.0.jar這兩個jar包拷貝到 solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib下
?
?
?
?
?
2.2 配置連接信息
把solr-7.4.0\example\example-DIH\solr\db下的文件復制到你創建的core里面 --> solr-7.4.0\server\solr\bless
?
打開conf目錄在db-data-config.xml和managed-schema中進行配置
?
??我的數據庫表信息
?
db-data-config.xml配置數據庫連接信息
<dataConfig><dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3307/leslia" user="root" password="root" /><document><entity name="bless" query="select * from bless"><field column="bless_id" name="id" /><field column="bless_content" name="blessContent" /><field column="bless_time" name="blessTime"/></entity></document> </dataConfig>?這個地方要注意一下 ,field主鍵必須設置為name="id",否則solr找不到主鍵會出現問題,為什么?看一下managed-schema配置文件中的這個主鍵配置
?
?然后去managed-schema里配置對應的field字段,這個也可以在管理端直接添加,也可以手動修改配置文件,name屬性要與db-data-config.xml 文件中name屬性一致
<field name="blessContent" type="text_general" indexed="true" stored="true"/> <field name="blessTime" type="pdate" indexed="true" stored="true"/>?
好了配置完畢。重啟solr,導入數據
查詢數據庫記錄是否導入
2.3 配置中文分析器
在solr-7.4.0/contrib/analysis-extras/lucene-libs下找到lucene-analyzers-smartcn-7.4.0.jar? copy 到?solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib
修改conf/managed-schema 添加如下配置信息,并重新啟動solr
<!-- ChineseAnalyzer --> <fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"><tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/></analyzer><analyzer type="query"><tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/></analyzer> </fieldType>使用中文分析?
不使用中文分析
?
給數據庫字段配置中文分析,需要修改managed-schema配置文件 type="text_ik",具體應用本教程不再涉及。
<field name="blessContent" type="text_ik" indexed="true" stored="true"/> <field name="blessTime" type="pdate" indexed="true" stored="true"/>?
?
3? solrj JAVA客戶端應用
solrJ是訪問Solr服務的JAVA客戶端,提供索引和搜索的請求方法,SolrJ通常嵌入在業務系統中,通過solrJ的API接口操作Solr服務。
示例數據還是應用上面mysql數據庫導入的
3.1 solrj 構建和運行
添加maven依賴
<dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>7.4.0</version> </dependency>3.2 solrj 應用(數據的 增、刪、改、查)
獲取?HttpSolrClient 連接
private static final String solrUrl="http://localhost:8983/solr/bless";//創建solrClient同時指定超時時間,不指定走默認配置private static HttpSolrClient client=new HttpSolrClient.Builder(solrUrl).withConnectionTimeout(10000).withSocketTimeout(60000).build();?
3.2.1 solrj 查詢
@Testpublic void querySolr() throws Exception{//封裝查詢參數SolrQuery query = new SolrQuery("*:*");//添加需要回顯得內容query.addField("id");query.addField("blessContent");query.addField("blessTime");query.setRows(20);//設置每頁顯示多少條//執行查詢返回QueryResponseQueryResponse response = client.query(query);//獲取doc文檔SolrDocumentList documents = response.getResults();for(SolrDocument solrDocument:documents){System.out.println(solrDocument.get("id"));System.out.println(solrDocument.get("blessContent"));System.out.println(solrDocument.get("blessTime"));}//關閉資源client.close();}?測試信息
3.2.2 solrj 增加/修改? ? ?修改是id不變其他字段變更
@Testpublic void solrAdd() throws Exception{//創建文檔docSolrInputDocument doc = new SolrInputDocument();doc.addField("id", 21);doc.addField("blessContent", "solrj add");doc.addField("blessTime",new Date());//添加到clientUpdateResponse updateResponse = client.add(doc);//索引文檔必須commitclient.commit();}?在管理端查看一下剛才添加的信息
?
?
?3.2.3 solrj 刪除? 刪除有3種方式
@Testpublic void solrDelete() throws Exception{//1 通過id 刪除client.deleteById("1");//2 通過id List 刪除ArrayList<String> ids = new ArrayList<String>();ids.add("2");ids.add("3");client.deleteById(ids);//3 通過 查詢信息刪除client.deleteByQuery("id:4");// 提交client.commit();// 關閉資源client.close();}?3.3 solrj? javaBean 整合應用? ?
SolrJ支持通過@Field注解隱式轉換文檔與任何類。每個實例變量在Java對象可以映射到一個相應的Solr字段中,使用?field注解。
| solr的fieldtype屬性 | javaBean 屬性類型 |
| string | String |
| boolean | Boolean |
| pint | Integer |
| pdouble | Double |
| plong | Long |
| pfloat | Float |
| pdate | Date |
?
?
?
?
?
?
?
?
創建實體類:
public class Bless {@Fieldprivate String id;@Fieldprivate String blessContent;@Fieldprivate Date blessTime;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getBlessContent() {return blessContent;}public void setBlessContent(String blessContent) {this.blessContent = blessContent;}public Date getBlessTime() {return blessTime;}public void setBlessTime(Date blessTime) {this.blessTime = blessTime;}}?
3.3.1 solrj + javaBean 查詢
@Testpublic void queryBean() throws Exception{SolrQuery query = new SolrQuery("*:*");//添加需要回顯得內容query.addField("id");query.addField("blessContent");query.addField("blessTime");query.setRows(20);//設置每頁顯示多少條//執行查詢返回QueryResponseQueryResponse response = client.query(query);//獲取doc文檔List<Bless> blessList=response.getBeans(Bless.class);for(Bless bless:blessList){System.out.println(bless.getId());System.out.println(bless.getBlessContent());System.out.println(bless.getBlessTime());}client.close();}?
3.3.2 solrj + javaBean 增加
@Testpublic void addBean() throws Exception{Bless bless=new Bless();bless.setId("19");bless.setBlessContent("solr java bean add");bless.setBlessTime(new Date());//添加對象UpdateResponse response = client.addBean(bless);//提交操作 client.commit();//關閉資源 client.close();}?
至此,solr 簡單應用已經介紹完畢。本篇文章屬于簡單優美型,并未深入探索,希望能幫助到各位同學。如需幫助可在博客下方留言。
?
轉載于:https://www.cnblogs.com/leslia/p/9544202.html
總結
以上是生活随笔為你收集整理的solr7.4.0+mysql+solrj(简而优美)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 3864 素数分解
- 下一篇: SQL中实现截取字符串的函数