<blockquote><h4>導(dǎo)入MySQL數(shù)據(jù)</h4></blockquote>
*首先:在做檢索數(shù)據(jù)之前,先將數(shù)據(jù)導(dǎo)入到Solr中宏怔,根據(jù)http://www.reibang.com/p/7ce281b2be30
*然后:這次我用的是article這張表锨亏,所以在以前的配置上要改相應(yīng)的配置文件(schema.xml骤肛、data-config.xml)舶治,將IKAnalyzer2012_FF_hf1.jar拷貝到/solr/WEB-INF/lib开镣,注意:必須是IKAnalyzer2012_FF_hf1.jar乏德,別的jar包好像不怎么好使巍糯,我試了好幾個jar包尝江。
schema.xml:
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>
<field name="text_ikarticle" type="text_ik" indexed="true" stored="true" required="true" />
其中"text_ikarticle"這個字段必須是你要中文分詞的那個字段
data-config.xml:
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/zhangxp"
user="root"
password="123456"/>
<document name="search_object">
<entity name="article" query="select articleID, content from article">
<field column="articleID" name="id"/>
<field column="content" name="text_ikarticle"/>
</entity>
</document>
</dataConfig>
其中field這塊是添加名稱轉(zhuǎn)化
*其次:導(dǎo)入數(shù)據(jù)涉波,導(dǎo)入數(shù)據(jù)如圖:
dataimport.png
使用分詞查詢,結(jié)果如下
分詞查詢.png
<blockquote><h4>基于WEB全文檢索</h4></blockquote>
基于Web查詢數(shù)據(jù)炭序,關(guān)鍵詞用紅字標(biāo)注
SolrArticleController .java
package com.xx.controller;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.xx.other.bean.Article;
@Controller
@RequestMapping("/solr")
public class SolrArticleController {
private static final String USER_URL = "http://localhost:8188/solr/article";
private static final Logger LOG = LoggerFactory.getLogger(SolrArticleController.class);
private static HttpSolrServer solrServer = new HttpSolrServer(USER_URL);
@RequestMapping(value="/query")
public String queryArticle(HttpServletRequest request,Model model) throws Exception{
String reqparam=request.getParameter("param");
reqparam=new String(reqparam.getBytes("iso-8859-1"), "utf-8");
if(StringUtils.isEmpty(reqparam)){
reqparam="*";
}
// new String(reqparam.getBytes(charset), charset)
SolrQuery query = new SolrQuery();
query.setHighlight(true);
query.addHighlightField("text_ikarticle");
query.setHighlightSimplePre("<font color=\"red\">");
query.setHighlightSimplePost("</font>");
query.setHighlightSnippets(1);
query.setHighlightFragsize(100);
query.set("q", "text_ikarticle:"+reqparam);
QueryResponse response = solrServer.query(query);
SolrDocumentList docList = response.getResults();
Map<String, Map<String, List<String>>> highmap = response.getHighlighting();
LOG.info("一共有 " + docList.getNumFound() + " 條記錄");
LOG.info("==================");
List<Article> list=new ArrayList<Article>();
Article article=null;
for (SolrDocument doc : docList) {
Collection<String> cols = doc.getFieldNames();
for (String field : cols) {
LOG.info(field + ":" + doc.get(field));
}
LOG.info("==================");
LOG.info(highmap.get(doc.get("id")).get("text_ikarticle").toString());
article=new Article(doc.get("id").toString(),highmap.get(doc.get("id")).get("text_ikarticle").toString());
list.add(article);
}
model.addAttribute("list", list);
return "solrArticle";
}
}
solrArticle.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
<c:forEach items="${list}" var="article" varStatus="vs">
<li>${article.articleID}===>${article.content}</li>
</c:forEach>
</ul>
</body>
</html>
檢索成功啤覆,顯示數(shù)據(jù)如圖所示:
檢索一半.png
檢索你的話.png