solr 4.8 mysql_Apache Solr 4.8.1 基于MYSQL数据库的索引创建

1.添加dataimport:编辑${catalina_home}\solr_config\solr\collection1\conf\solrconfig.xml,在最后添加以下内容;

data-config.xml

2.在同一目录新建 data-config.xml内容如下:

deltaQuery="select id,title,content from luyou where createdTime > '${dataimporter.last_index_time}'" >

 

3.将相关jar包copy到${catalina_home}\webapps\solr\WEB-INF\lib中,主要有三个包。mysql, solr-dataimporthandler-4.2.1.jar和solr-dataimporthandler-extras-4.2.1.jar;

4.编辑${catalina_home}\solr_config\solr\collection1\conf\schema.xml,将几个相关字段的属性添加上。因为原始文档中已经存在这几个字段名,所以此处做部分修改,此处如有不解可以参看下solr的配置文档;

5.启动tomcat,直接访问 http://localhost:8983/solr/import?command=full-import,如果成功,会有相关消息显示有多少条数据index,  同时在${catalina_home}\solr_config\solr\collection1\conf\dataimport.properties中会产生一个dataimport.properties文件,其中记录最后index时间,这个是增量index的时间标致,标识下次index从哪里开始,原则上数据库中应该有个时间字段与其比较。手动插入几条数据,将时间设为标识之后,然后访问 /dataimport?command=delta-import,可见增量的index数据;

6.client端测试:相关jar包 solr-4.2.1\dist\solrj-lib中的所有包及solr-4.2.1\dist\solr-solrj-4.2.1.jar,执行以下程序,可看到结果;

package com.solr.client;

import org.apache.solr.client.solrj.SolrQuery;

import org.apache.solr.client.solrj.SolrServerException;

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;

//solr客户端调用

public class SolrJSearch {

String url = "http://localhost:8080/solr";

HttpSolrServer solrServer =null;

/**

* 初始化CommonsHttpSolrServer

*/

public SolrJSearch(){

solrServer = new HttpSolrServer(url);

solrServer.setMaxTotalConnections(100);

solrServer.setSoTimeout(10000);

solrServer.setConnectionTimeout(5000);

}

/**

* 全文检索方法

*/

public void search(String keywords){

SolrQuery query = new SolrQuery();

query.setQuery(keywords);

//设置合并

query.setFacet(true);

query.setHighlight(true)

.setHighlightSnippets(3)

.setHighlightSimplePre("")//设置开头

.setHighlightSimplePost("") //设置结尾

//.setParam("hl.mergeContiguous", "true")

.setParam("hl.fl", "content,title");

//.setStart(0)

//.setRows(10);//设置行数

//新加条件(and的作用对TERM_VAL的6到8折的限制)

//query.addFilterQuery("content:EditText");

//排序用的

//query.addSortField( "price", SolrQuery.ORDER.asc );

try {

QueryResponse rsp = solrServer.query( query );

SolrDocumentList docs = rsp.getResults();

System.out.println("数据匹配个数:" + docs.getNumFound());

System.out.println("查询时间:" + rsp.getQTime());

for (SolrDocument doc : docs) {

String id = (String) doc.getFieldValue("id");

if(rsp.getHighlighting().get(id)!=null){

System.out.println("id is "+id);

System.out.println(rsp.getHighlighting().get(id).get("title"));

System.out.println(rsp.getHighlighting().get(id).get("content"));

}

// String content = (String) doc.getFieldValue("content");

// String title = (String) doc.getFieldValue("title");

// System.out.println("id:"+id);

// System.out.println("content:"+content);

// System.out.println("title:"+title);

System.out.println("-------------------");

}

} catch (SolrServerException e) {

e.printStackTrace();

}

}

/**

* 测试方法

*/

public static void main(String[] args) {

SolrJSearch sj = new SolrJSearch();

sj.search("什么");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值