日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Solr的安装和使用

發布時間:2023/12/13 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Solr的安装和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝

CentOS中先安裝好Java和Tomcat。準備工具IK Analyzer 2012FF

和Solr-4.10.3.tgz

將solr-4.10.3文件夾中dist中的solr-4.10.3.war文件復制到Tomcat的webapps,并且更名為solr.war,下開啟tomcat解壓后再關閉tomcat,再刪除solr.war。

將Solr-4.10.3文件中,example/lib/ext下所有jar包復制到tomcat/webapps/solr/WEB-INF/lib文件夾下。

在你愿意的位置創建一個目錄叫solrhome,把Solr-4.10.3 /example下solr復制到 solrhome中,然后在solr的WEB-INF下的web.xml中配置solrhome的位置。

<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>/usr/local/solr/solrhome</env-entry-value><env-entry-type>java.lang.String</env-entry-type></env-entry>

?

配置業務字段

?

把IK_Analyzer 2012文件夾下的IKAnalyzer2012FF_u1的jar包復制到solr 的WEB-INF下lib文件夾中。

在WEB-INF下新建classes文件夾。復制如下三個文件到classes中

cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes

?

修改solrhome/collection1/conf/schema.xml文件,在末尾添加

<fieldType name="text_ik" class="solr.TextField"><analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <field name="item_title" type="text_ik" indexed="true" stored="true"/> <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/> <field name="item_price" type="long" indexed="true" stored="true"/> <field name="item_image" type="string" indexed="false" stored="true" /> <field name="item_category_name" type="string" indexed="true" stored="true" /> <field name="item_desc" type="text_ik" indexed="true" stored="false" /><field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="item_title" dest="item_keywords"/> <copyField source="item_sell_point" dest="item_keywords"/> <copyField source="item_category_name" dest="item_keywords"/> <copyField source="item_desc" dest="item_keywords"/>

重啟tomcat

簡單測試

打開solr網址,http://192.168.140.133:8080/solr/,點擊左側collection1,選擇Documents

在documents中輸入

點擊Submit Document

?點擊Collection1下的Query,點擊Execute Query

?

刪除該測試文檔,

在Documents輸入

<delete> <query>*:*</query> </delete> <commit/>

Document Type選擇xml,然后Submmit Document。

再Execute Query就沒有文檔了。

},"response": {"numFound": 0,"start": 0,"docs": []} }

?使用Java代碼來測試solr文檔

添加SolrJava客戶端依賴

<!-- solr客戶端 --><dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId></dependency>

測試代碼

public class SolrJTest {@Testpublic void addDocument() throws Exception {//創建一連接SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");//創建一個文檔對象SolrInputDocument document = new SolrInputDocument();document.addField("id", "test001");document.addField("item_title", "測試商品2");document.addField("item_price", 54321);//把文檔對象寫入索引庫 solrServer.add(document);//提交 solrServer.commit();}@Testpublic void deleteDocument() throws Exception {//創建一連接SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");//solrServer.deleteById("test001");solrServer.deleteByQuery("*:*");solrServer.commit();} }

使用Java代碼將MySQL數據上傳到Solr服務器

使用Http方式,訪問http://localhost/search/import的時候,將后臺MySQL幾個表的數據上傳到Solr服務器。

先看Controller

@Controller public class SearchController {@Autowiredprivate ImportItemService importItemService;@RequestMapping("/search/import")@ResponseBodypublic TaotaoResult importAll() {TaotaoResult result = importItemService.importAll();return result;}

Service層總ImportItemService的實現類是

@Service public class ImportItemServiceImpl implements ImportItemService {@Autowiredprivate ImportItemMapper iim;@Autowiredprivate SolrServer solrServer;@Overridepublic TaotaoResult importAll(){try {List<ImportItem> list = iim.importItemList();for(ImportItem item:list) {SolrInputDocument document= new SolrInputDocument();document.setField("id", item.getId());document.setField("item_title", item.getTitle());document.setField("item_sell_point", item.getSell_point());document.setField("item_price", item.getPrice());document.setField("item_image", item.getImage());document.setField("item_category_name", item.getCategory_name());document.setField("item_desc", item.getItem_des());//寫入索引庫 solrServer.add(document);}solrServer.commit();} catch (Exception e) {e.printStackTrace();return TaotaoResult.build(500, ExceptionUtil.getStackTrace(e));}return TaotaoResult.ok();}}

其中ImportItem類

public class ImportItem { //getter and setter... ...private String id;private String title;private String sell_point;private long price;private String image;private String category_name;private String item_des;}

?

DAO 層

public interface ImportItemMapper {List<ImportItem> importItemList(); }

對應XML文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.taotao.mapper.ImportItemMapper" ><select id="importItemList" resultType="com.taotao.pojo.ImportItem">SELECTa.id,a.title,a.sell_point,a.price,a.image,b. NAME category_nameFROMtb_item aLEFT JOIN tb_item_cat b ON a.cid = b.id</select></mapper>

?搜索服務發布

預熱:先了解SolrJ如何訪問solr服務器。

測試代碼

@Testpublic void queryDocument() throws Exception {SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr");//創建一個查詢對象SolrQuery query = new SolrQuery();//設置查詢條件query.setQuery("*:*");query.setStart(20);query.setRows(50);//執行查詢QueryResponse response = solrServer.query(query);//取查詢結果SolrDocumentList solrDocumentList = response.getResults();System.out.println("共查詢到記錄:" + solrDocumentList.getNumFound());for (SolrDocument solrDocument : solrDocumentList) {System.out.println(solrDocument.get("id"));System.out.println(solrDocument.get("item_title"));System.out.println(solrDocument.get("item_price"));System.out.println(solrDocument.get("item_image"));}}

DAO層

public interface SearchDao {SearchResult search(SolrQuery query)throws Exception; } @Component public class SearchDaoImpl implements SearchDao {@Autowiredprivate SolrServer solrServer;@Overridepublic SearchResult search(SolrQuery query) throws Exception {//返回值對象SearchResult result = new SearchResult();//根據查詢條件查詢索引庫QueryResponse queryResponse = solrServer.query(query);//取查詢結果SolrDocumentList solrDocumentList = queryResponse.getResults();//取查詢結果總數量 result.setRecordCount(solrDocumentList.getNumFound());//商品列表List<ImportItem> itemList = new ArrayList<>();//取高亮顯示Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();//取商品列表for (SolrDocument solrDocument : solrDocumentList) {//創建一商品對象ImportItem item = new ImportItem();item.setId((String) solrDocument.get("id"));//取高亮顯示的結果List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");String title = "";if (list != null && list.size()>0) {title = list.get(0);} else {title = (String) solrDocument.get("item_title");}item.setTitle(title);item.setImage((String) solrDocument.get("item_image"));item.setPrice((long) solrDocument.get("item_price"));item.setSell_point((String) solrDocument.get("item_sell_point"));item.setCategory_name((String) solrDocument.get("item_category_name"));//添加的商品列表 itemList.add(item);}result.setItemList(itemList);return result;}

POJO類

public class SearchResult {//商品列表private List<ImportItem> itemList;//總記錄數private long recordCount;//總頁數private long pageCount;//當前頁private long curPage;}

Service層

public interface SearchService {SearchResult search(String query,int page,int rows)throws Exception; }@Service public class SearchServiceImpl implements SearchService {@Autowiredprivate SearchDao searchDao;@Overridepublic SearchResult search(String queryString, int page, int rows) throws Exception {//創建查詢對象SolrQuery query = new SolrQuery();//設置查詢條件 query.setQuery(queryString);//設置分頁query.setStart((page - 1) * rows);query.setRows(rows);//設置默認搜素域query.set("df", "item_keywords");//設置高亮顯示query.setHighlight(true);query.addHighlightField("item_title");query.setHighlightSimplePre("<em style=\"color:red\">");query.setHighlightSimplePost("</em>");//執行查詢SearchResult searchResult = searchDao.search(query);//計算查詢結果總頁數long recordCount = searchResult.getRecordCount();long pageCount = recordCount / rows;if (recordCount % rows > 0) {pageCount++;}searchResult.setPageCount(pageCount);searchResult.setCurPage(page);return searchResult;}}

Controller層

@Autowiredprivate SearchService searchService;@RequestMapping(value="/query", method=RequestMethod.GET)@ResponseBodypublic TaotaoResult search(@RequestParam("q")String queryString, @RequestParam(defaultValue="1")Integer page, @RequestParam(defaultValue="60")Integer rows) {//查詢條件不能為空if (StringUtils.isBlank(queryString)) {return TaotaoResult.build(400, "查詢條件不能為空");}SearchResult searchResult = null;try {queryString=new String(queryString.getBytes("iso8859-1"),"utf-8");searchResult = searchService.search(queryString, page, rows);} catch (Exception e) {e.printStackTrace();return TaotaoResult.build(500, ExceptionUtil.getStackTrace(e));}return TaotaoResult.ok(searchResult);}

?

轉載于:https://www.cnblogs.com/legion/p/9717724.html

總結

以上是生活随笔為你收集整理的Solr的安装和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。