版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
課程計SolrSolr整合Solr管理功能介配置中文分析使用Solr的管理索引添加文刪除文修改文查詢文SolrJ添加文修改文刪除文查詢文案例分案例實需求分實現(xiàn)方Lucene實單獨使用Lucene實現(xiàn)站內(nèi)搜索需要開發(fā)的工作量較大,主要表現(xiàn)在:索引、索引性能solr實SolrSolr提供了較為完什么SolrApacheJavaLucene的全文搜索服務器。SolrLucene更為豐富的查詢語言,同時實現(xiàn)了可配置、可擴展,并對索POSTSolrFieldXML文檔,Solr根xmlSolrHTTPGETSolrXml、json等格式的查詢結果進行解析,組織頁面布局。SolrUI的功能,SolrSolr的配置和運行情況。SolrLucene的區(qū)別Lucene是一個開放源代碼的全文檢索引擎工具包,它不是一個完整的全文檢索引擎,Lucene提供了完整的查詢引擎和索引引擎,目的是為軟件開發(fā)人員提供一個簡單易用的工Lucene為基礎構建全文檢索引Solr的目標是打造一款企業(yè)級的搜索引擎系統(tǒng),它是一個搜索引擎服務,可以獨立運SolrSolr也可以高效的完成站內(nèi)搜索Solr安裝及配Solr的從SolrSolr4.10.3,根據(jù)Solr的運行環(huán)境Linux下需要lucene-4.10.3.tgz,windows下需要lucene-4.10.3.zip。Solr使用指南可參考:。Solr的文件夾結solr-4.10.3.zipbin:solrcontrib:solr的一些貢獻軟件/solr 包含build過程中產(chǎn)生的war和jar文件,以及相關的依賴文件docs:solrAPIexample:solr工程的例 是一個包含了默認配置信息的Solr的 包含了在Solr的multicore中設置的多個 中包括一個solr.war,該war可作為solr的運行實例工程licenses:solr相關的一些信運行環(huán)solrServlet容器中,Solr4.10.3jdk1.7以上,SolrJetty(java寫的Servlet容器),本使用Tocmat作為Servlet容器,環(huán)境如下SolrSolrHome創(chuàng)建一個Solrhome ,SolrHome是Solr運行的主 中包括了運行Solr實例所有的配置文件和數(shù)據(jù)文件,Solr實例就是SolrCore,一個SolrHome可以包括多個(Solr實例),SolrCoreexample\solr是一個solr 上圖中“collection1”是一個SolrCore(Solr實例 內(nèi)容如下所示collection1SolrSolrCore,SolrCoresolr運行實例對solrHome中可以創(chuàng)建多個solr運行實例SolrCore。一個solr的運行實例對應一個索引 conf是SolrCore的配置文 整合步第二步:把solr的war包到tomcat的 下把\solr-4.10.3\dist\solr-4.10.3.war到D:\temp\apache-tomcat-7.0.53\webapps下。solr.war 下的所有的jar包添加到solr工程中第五步:配置solrHome和solrCore。solrhome。solrhomecollection1solrcoresolr的實例。一個solrcore相當于mysql中一個數(shù)據(jù)庫。Solrcore之間是相互。solrcoreconfsolrconfsolrconfig.xml。配置實例的相關信息。如果使用默認Xml的配置信息Lib:solrcollection1\lib文件夾,如果沒有dataDircollection1\data文件夾,如data文件夾,會自動創(chuàng)建。solrsolrHomeweb.xmljndi的方式solr服務器。Solr/home名稱必須是固定的第八步:Solr管管理界Solr實例開始啟動運行的時間、版本、系統(tǒng)資源、jvmSolrSolrCloud的管理界面:CoreSolrCore的管理界面。SolrCoreSolr的一個獨立運行實例單位,它可以對外提供索引。第一步:collection1改名為javaSolrJVM運行環(huán)境中的屬性信息,包括類路徑、文件編碼、jvmTread顯示SolrServer中當前活躍線程信息,同時也可以線程運行棧信息CoreSolrCoreSolr/update表示更新索引,solr默認根據(jù)id(唯一約束)域來更新的內(nèi)容,如idid域則會執(zhí)行添加操作,如果找到則更新。通過/select執(zhí)行搜索索引,必須指定“q配置中文分析schema.xml,在SolrCore的conf 下,它是Solr數(shù)據(jù)表配置文件,它定義了加入索引的數(shù)據(jù)的數(shù)據(jù)類型的。主要包括FieldTypes、Fields和其他的一些缺省設置。FieldType域類型定FieldType子結點包括:name,class,positionIncrementGapLuceneslop100。例如:搜索bigcar,如果 中存的是big car,就無法搜索到了,positionIncrementGap就是設置big和car中間最大的間隔距離,只要在距離內(nèi)就能搜索到. 用詞過濾器,solr.LowerCaseFilterFactory小寫過濾器。solr.SynonymFilterFactory同義詞過濾器。Field定在fields結點內(nèi)定義具體的Field,filed定義包括name,type(為之前定義過的各種<fieldname="name"type="text_general"indexed="true" multialued該Field如果要多個值時設置為truesolr允許一個Field多個值,比如一個用戶的好友id(多個),商品的(多個,大圖和小圖),通過使用solr查SolrkeyidSolrid域進行判斷,也可以自定義唯一主鍵。copyFieldcopyField域,可以將多個Field到一個Field中,以便進行統(tǒng)一的檢索:title標題內(nèi)容content,title、content、text根據(jù)關鍵字只搜索text域的內(nèi)容就相當于搜索title和content,將title和contenttextdynamicField(動態(tài)字段動態(tài)字段就是不用指定具體的名稱,只要定義字段名稱的規(guī)則,例如定義一個dynamicField,name為*_itypetext,那么在使用這個字段的時候,任何以_i結尾的字段都被認為是符合這個定義的,例如:name_i,gender_i,school_i等。Field名為:product_title_t,“product_title_tscheam.xml安裝中文分詞使用IKyzer中文分析器第一步:把IKyzer2012FF_u1.jar添加到solr/WEB- 下第二步:IKyzer的配置文件和自定義詞典和停用詞詞典到solr的classpath下也就是在apache-tomcat-7.0.54\webapps\solr\WEB-INF 下新建classes <!--<fieldTypename="text_ik"<!--<fieldTypename="text_ik" yzer yzerField--<fieldname="title_ik"yzerField--<fieldname="title_ik"type="text_ik"indexed="true"stored="true"<fieldname="content_ik"type="text_ik"indexed="true"stored="false"設置業(yè)務系統(tǒng)SolrFieldField,如下是商品Field:<fieldname="product_name"type="text_ik"indexed="true"<field type="float"indexed="true"<fieldname="product_description"type="text_ik"indexed="true"stored="false"<fieldname="product_picture"type="string"indexed="false"stored="true"<fieldname="product_catalog_name"type="string"indexed="true"stored="true" <copyFieldsource="product_name" <copyFieldsource="product_description" Solr管理索引索添加/更新文添加單個文批量導入數(shù)dataimportdataimportjarsolrcore(collection1\lib)還需要mysql的數(shù)<requestHandlername="/dataimport"<lst<strname="config">data-<requestHandlername="/dataimport"<lst<strname="config">data-<?xmlversion="1.0"encoding="UTF-8" <dataSource <entity<?xmlversion="1.0"encoding="UTF-8" <dataSource <entityname="product"query="SELECTpid,name,catalog_name,price,description,pictureFROMproducts"><fieldcolumn="pid"<fieldcolumn="name"<fieldcolumn="catalog_name"<fieldcolumn="price"<fieldcolumn="description"<fieldcolumn="picture" 到入數(shù)據(jù)前會先清空索引庫,然后再導入刪除文ID查詢索通過/select搜索索引,Solrq-查詢字符串,必須的,如果查詢所有使用*:*120也可以在“qproduct_price:[1TO20]20以上:product_price:[20TO*]20以下:product_price:[*TOsort-排序,格式:sort=<fieldname>+<desc|asc>[,<fieldname>+<desc|asc>]按價格降序start-0rows-start10fl-顯示商品、商品名稱、商品價也可以在SolrCore 中conf/solrconfig.xml文件中指定默認搜索Field,指定后就可wtwritertype)xml,json,php,phps,solr1.3增加的,要用hl,FieldSolrJ管理索引什么solrj是Solr服務的java客戶端,提供索引和搜索的請求方法,SolrJ通常在嵌入在SolrJAPISolr服務,如下圖:javaEEjavaEESolrIndex依賴jar添加文實現(xiàn)步javajarsolrJ的jar第三步:和Solr服務器建立連接。HttpSolrServer對象建立連接。第四步:創(chuàng)建一個SolrInput 第五步:將SolrInput 代碼實publicvoid()throwsException//和solrSolrServersolrServer=new =new //.addField("id",.addField("title_ik",使用solrJ添加的文檔.addField("content_ik文檔的內(nèi)容.addField("product_name商品名稱// //}刪除文id刪////刪除文檔,根據(jù)idpublicvoidByid()throwsException//SolrServersolrServer=new //根據(jù)id//}根據(jù)查詢刪publicpublicvoidByQuery()throwsException//SolrServersolrServer=new //}修改文solrJupdateadd方法,只需要添加一條新的文檔,和被修id一致就,可以修改了。本質(zhì)上就是先刪除后添加。查詢文簡單查////publicvoidqueryIndex()throwsExceptionSolrServersolrServer=new//創(chuàng)建一個querySolrQueryquery=newQueryResponsequeryResponse= List List=System.out.println("共查詢到商品數(shù)量:"+ for : List)}}復雜查////publicvoidqueryIndex2()throwsException//SolrServersolrServer=new//創(chuàng)建一個querySolrQueryquery=new////query.setSort("product_price",//query.set("df", QueryResponsequeryResponse= List List=System.out.println("共查詢到商品數(shù)量:"+ for : List)StringproductName=Map<String,Map<String,List<String>>>highlighting=List<String>list=if(null!=list)productName=}elseproductName=(String) }}}案例實原型分系統(tǒng)架springspringServiceDaoSolrmysqlSolr工程搭webjar1、springmvcjar2、solrJjar3、Example\lib\ext下的jar<?xml<?xmlversion="1.0"encoding="UTF-<beans"""""mvc-mvc-<ponent-scanbase-<!--配置注解驅(qū)動,如果配置 可以不用配置處理器映射器和適配器--<bean<propertyname="prefix"value="/WEB-<propertyname="suffix"SolrServer<beanid="httpSolrServer" <constructor-argindex="0"<?xml<?xmlversion="1.0"encoding="UTF-<web-app"/xml/ns/javaee" /xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" y-<<e-<e-<e-<e-<e-<e-<指定springmvc-- 解決postservice層傳遞過來的參數(shù),根據(jù)參數(shù)查詢索引庫,返回查詢結果。參數(shù):SolrQuery對象方法定義:ResultModelqueryProduct(SolrQueryquery)throwspublicclassProductModel商品編privateString商品名privateString商品分類名privateString價privatefloat商品描privateString//名privateString}publicclassResultModel商品列privateList<ProductModel>商品總privateLong總頁privateint當前privateint}publicclassProductDaoImplimplementsProductDaoprivateSolrServerpublicResultModelqueryProduct(SolrQueryquery)throwsExceptionResultModelresultModel=new//根據(jù)queryQueryResponsequeryResponse=ListList= List<ProductModel>productList=newArrayList<>();//for : List)//ProductModelproductModel=newproductModel.setPid((String)//StringproductName=Map<String,Map<String,List<String>>>highlighting=List<String>list=if(null!=list)productName=}elseproductNameproductName=(String)}if(null==doc.get("product_price")){}productModel.setCatalog_name((String)productModel.setPicture((String)}//商品列表添加到resultmodelreturn}}560條。傳遞一個當前頁碼就可以了。12dao方法定義:ResultModelqueryProduct(StringqueryString,Stringcaltalog_name,Stringprice,Stringsort,Integerpage)throwsException;publicclassProductServiceImplimplementsProductServiceprivateProductDaopublicResultModelqueryProduct(StringqueryString,Stringcaltalog_name,Stringprice,Stringsort,Integerpage)throwsException{//SolrQueryquery=new//if(null!=queryString&&!"".equals(queryString)){}else}if(null!=caltalog_name&&!"".equals(caltalog_name)){query.addFilterQuery("product_catalog_name:"+caltalog_name);}//if(null!=price&&!"".equals(price)){String[]strings=price.split("-query.addFilterQuery("product_price:["+strings[0]+"TO}//if("1".equals(sort)){query.setSort("product_price",ORDER.desc);}elsequery.setSor
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職工程審計管理應用(應用技術)試題及答案
- 2025年中職新能源汽車(充電槍更換)試題及答案
- 2026年營養(yǎng)咨詢(孕婦營養(yǎng)調(diào)理)試題及答案
- 按價值付費下5G醫(yī)療成本效益分析
- 養(yǎng)老院老人緊急聯(lián)絡通訊制度
- 養(yǎng)老院老人生活娛樂活動組織人員培訓制度
- 養(yǎng)老院老人家庭關系溝通制度
- 養(yǎng)老院突發(fā)事件應急預案制度
- 養(yǎng)老院醫(yī)療護理服務質(zhì)量制度
- 2026年國企財務知識成本核算方法應用練習與答題指引含答案
- 靜脈用藥調(diào)配中心建設與管理指南(2021試行版)解讀
- 癌癥患者生活質(zhì)量量表EORTC-QLQ-C30
- 六年級上冊數(shù)學教案-總復習 專題一 數(shù)與代數(shù)|北師大版
- 工業(yè)互聯(lián)網(wǎng)標準體系(版本3.0)
- 培養(yǎng)小學生的實驗操作能力
- 氣動回路圖與氣動元件課件
- 《念奴嬌 赤壁懷古》《永遇樂 京口北固亭懷古》《聲聲慢》默寫練習 統(tǒng)編版高中語文必修上冊
- 婦產(chǎn)科病史采集臨床思維
- 眾辰變頻器z2400t-15gy-1說明書
- DB63T 393-2002草地鼠蟲害、毒草調(diào)查技術規(guī)程
- 船體振動的衡準及減振方法
評論
0/150
提交評論