solrj操作solr

solrj的使用

首先配置好tomcat和solr(solr3.6)  http://blog.csdn.net/dengsilinming/article/details/7759426
我在eclipse中建了一个工程,刚开始时一直报错,缺少类包,把下面的jar包找全后并添加到工程中去。
apache-solr-core-3.6.1.jar
apache-solr-solrj-3.6.1.jar


solrj-lib\commons-codec-1.6.jar
solrj-lib\commons-httpclient-3.1.jar
solrj-lib\commons-io-2.1.jar
solrj-lib\jcl-over-slf4j-1.6.1.jar
solrj-lib\slf4j-api-1.6.1.jar
slf4j-log4j12-1.7.2.jar
log4j-1.2.15.jar
junit-4.8.2.jar

然后在src中新建一个file,文件名为:log4j.properties,向文件中加入以下信息:
log4j.rootLogger=WARN, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n


solrj向solr建的索引添加信息

首先打开目录\solr\conf\schema.xml文件在<fields>下增加下字段。用于增加到搜索引擎的字段
<field name="blogId" type="string" indexed="true" stored="true"  required="true"/>
<field name="content" type="text_general" indexed="true" stored="true" omitNorms="true" />
<field name="bTypeId" type="string" indexed="true" stored="true" />
<field name="bTypeName" type="string" indexed="true" stored="true" />
<field name="nickName" type="string" indexed="true" stored="true" />
<field name="createTime" type="date" indexed="true" stored="true" omitNorms="true" />

这几个field是我们需要添加的字段




import java.io.IOException;
import java.net.MalformedURLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
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;

public class test {
	private CommonsHttpSolrServer solrServer;

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
test t=new test();
t.writerBlog();
t.search("Hello");


	}
	public void writerBlog(BlogsDO blog) {
        // TODO Auto-generated method stub
		Random rd=new Random(5);
         try {
             blog.setId(rd.nextInt()+"");          
              solrServer = new CommonsHttpSolrServer("http://localhost:8080/solr");
              SolrInputDocument doc1 = new SolrInputDocument();
              doc1.addField("id", rd.nextInt()+"" );
              doc1.addField("blogId", 10001);
              doc1.addField("title","hello,word");
              doc1.addField("bTypeId", ".....");
              doc1.addField("bTypeName", ".......");
              doc1.addField("content",  ".........");

              doc1.addField("createTime",new Date());//date类型
              doc1.addField("nickName",".........");
              solrServer.add(doc1);
              solrServer.commit();
        } catch (SolrServerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
/*如果在add的时候出错,可以查看一下tomcat的日志文件,里面有详细的原因,大多是因为字段的类型与schema.xml中添加的不一样,我这里的schema.xml文件里没有text类型,但我看了一下,有text_general类型,所以我这里的content为text_general类型*/
//下面为查询操作
	public void search(String str) throws MalformedURLException{
		  solrServer = new CommonsHttpSolrServer("http://localhost:8080/solr");
		SolrQuery query = new SolrQuery("content:"+str);//这里面传进去的可以参数可以为
// "*:*"(表示查询所有),还可以使用“OR”,“AND”表示或,且的意思 如:"content:"+str+" OR title:"+str //为查询所有标题和内容中出现str字符串的结果
		try {
		 QueryResponse response = solrServer.query(query);
		 SolrDocumentList docs = response.getResults();
		 System.out.println("文档个数:" + docs.getNumFound()); 
		 System.out.println("查询时间:" + response.getQTime());
		for (SolrDocument doc : docs) { 
		 System.out.println("id: " + doc.getFieldValue("blogId")); 
		 System.out.println("title: " + doc.getFieldValue("title")); 
		 System.out.println(); 
		 }
		}catch(Exception e){}

	}

}

//这篇文章中有详细的介绍http://www.blogjava.net/conans/articles/379556.html,但是里面的代码需要修改才运行


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值