真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【學(xué)習(xí)筆記】如何配置Solr索引庫(kù)

本篇文章為大家展示了【學(xué)習(xí)筆記】如何配置Solr索引庫(kù),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

目前創(chuàng)新互聯(lián)建站已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、佛山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

Spring整合Solr

Spring配置:



	
	
	
	
		
	

Java代碼操作Solr索引庫(kù):

package cn.xing.test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.xing.pojo.SearchItem;
import cn.xing.pojo.SearchResult;

/**
 * 操作solr索引庫(kù)
 * 
 * @author Xing
 *
 */
@Service
public class Operation {

	@Autowired
	private SolrServer solrServer;// 是配置的httpSolrServer

	/**
	 * 把所有商品導(dǎo)入索引庫(kù),商品對(duì)象SearchItem必須和solr配置的業(yè)務(wù)域字段、類(lèi)型相同
	 */
	public void imprtSolrItem() {
		try {
			List list = new ArrayList();
			list.add(new SearchItem("1", "湖北", "黃鶴樓", 12, "image1", "省市"));
			list.add(new SearchItem("2", "河南", "開(kāi)封", 12, "image2", "省市"));
			list.add(new SearchItem("3", "3", "3", 12, "image2", "222"));
			// 把list放入索引庫(kù)
			for (SearchItem searchItem : list) {
				SolrInputDocument doc = new SolrInputDocument();
				doc.addField("id", searchItem.getId());
				doc.addField("item_title", searchItem.getTitle());
				doc.addField("item_sell_point", searchItem.getSell_point());
				doc.addField("item_price", searchItem.getPrice());
				doc.addField("item_image", searchItem.getImage());
				doc.addField("item_category_name", searchItem.getCategory_name());
				solrServer.add(doc);
			}
			solrServer.commit();
			System.out.println("數(shù)據(jù)導(dǎo)入成功");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 根據(jù)查詢條件SolrQuery,查詢索引庫(kù)
	public List querySolr(SolrQuery query) throws SolrServerException {
		// 根據(jù)條件查詢索引庫(kù)
		QueryResponse queryResponse = solrServer.query(query);
		SolrDocumentList results = queryResponse.getResults();
		// 取出總記錄數(shù)
		long num = results.getNumFound();
		System.out.println("查詢結(jié)果的數(shù)據(jù)條數(shù):" + num);
		// 取出商品列表,高亮關(guān)鍵詞
		// Map<商品id,Map<商品屬性字段,List<字段的值>>>
		Map>> highlighting = queryResponse.getHighlighting();
		List itemList = new ArrayList<>();
		for (SolrDocument solrDocument : results) {
			SearchItem item = new SearchItem();
			item.setId((String) solrDocument.get("id"));
			item.setCategory_name((String) solrDocument.get("item_category_name"));
			item.setImage((String) solrDocument.get("item_image"));
			item.setPrice((long) solrDocument.get("item_price"));
			item.setSell_point((String) solrDocument.get("item_sell_point"));
			// 取高亮結(jié)果,商品標(biāo)題
			List list = highlighting.get(solrDocument.get("id")).get("item_title");
			if (list != null && list.size() > 0) {
				item.setTitle(list.get(0));// 拿到該商品標(biāo)題
			} else {
				item.setTitle((String) solrDocument.get("item_title"));
			}
			itemList.add(item);
		}
		return itemList;
	}

	/**
	 * 根據(jù)關(guān)鍵詞在solr索引庫(kù)中搜索商品并分頁(yè)。
	 */
	public SearchResult search(String keyword, int page, int rows) throws Exception {
		// 設(shè)置查詢條件,調(diào)用querySolr()方法查詢
		SolrQuery query = new SolrQuery();
		query.setQuery(keyword);// 設(shè)置查詢條件
		if (page <= 0)
			page = 1;
		query.setStart((page - 1) * rows);// 設(shè)置分頁(yè)索引
		query.setRows(rows);// 設(shè)置查詢條數(shù)
		// 設(shè)置默認(rèn)搜索域
		query.set("df", "item_title");
		// 設(shè)置高亮顯示
		query.setHighlight(true);
		query.addHighlightField("item_title");
		query.setHighlightSimplePre("");
		query.setHighlightSimplePost("");
		// 執(zhí)行查詢
		List itemList = this.querySolr(query);
		// 設(shè)置返回結(jié)果
		SearchResult rs = new SearchResult();
		rs.setItemList(itemList);
		/*
		 * // 設(shè)置總頁(yè)數(shù) int totalpages = rs.getRecourdCount() / rows; if
		 * (rs.getRecourdCount() % rows > 0) totalpages++; rs.setTotalPages((long)
		 * totalpages);
		 */		
		return rs;
	}

}

 分頁(yè)查詢數(shù)據(jù)封裝:

package cn.xing.pojo;

import java.io.Serializable;
import java.util.List;

/**
 * 搜素商品的結(jié)果。對(duì)頁(yè)面需要的數(shù)據(jù)的封裝。
 * 
 * @author Xing
 *
 */
public class SearchResult implements Serializable {

	private Long totalPages;
	private Integer recourdCount;
	private List itemList;
}

 Solr數(shù)據(jù)對(duì)應(yīng)的pojo:

package cn.xing.pojo;

import java.io.Serializable;

import org.apache.commons.lang3.StringUtils;

public class SearchItem implements Serializable {
	@Override
	public String toString() {
		return "SearchItem [id=" + id + ", title=" + title + ", sell_point=" + sell_point + ", price=" + price
				+ ", image=" + image + ", category_name=" + category_name + "]";
	}

	// 類(lèi)型和solr的中文分析器里的schema.xml中配置的type必須一樣
	private String id;
	private String title;
	private String sell_point;
	private long price;
	private String image;
	private String category_name;

	// 搜索結(jié)果頁(yè)面展示一張圖片
	public String[] getImages() {
		String image2 = this.getImage();
		if (StringUtils.isNotBlank(image2)) {
			String[] imagesArr = image2.split(",");
			return imagesArr;
		}
		return null;

	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

}

Java測(cè)試代碼:

package cn.xing.test;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.xing.pojo.SearchItem;
import cn.xing.pojo.SearchResult;
public class test {
	public static void main(String[] args) throws Exception {
		ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
		Operation operation = ac.getBean(Operation.class);

		// 導(dǎo)入數(shù)據(jù)
		operation.imprtSolrItem();

//		SearchResult search = operation.search("明明就", 1, 1);
		SearchResult search = operation.search("3", 1, 10);
		List itemList = search.getItemList();
		for (SearchItem searchItem : itemList) {
			System.out.println(searchItem);
		}
	}
}

上述內(nèi)容就是【學(xué)習(xí)筆記】如何配置Solr索引庫(kù),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章題目:【學(xué)習(xí)筆記】如何配置Solr索引庫(kù)
地址分享:http://weahome.cn/article/jgjddo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部