solrj操控sorl,增删改查

maven

<dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>4.10.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>

增加的大体思路

  1. 第一,准备好一个sorl项目并启动,得到一个sorl的url。
  2. 第二,导入的jar包中得到sorl的客户端对象HttpSolrServer
  3. 第三,new一个doc对象,添加到HttpSolrServer
  4. 第四,提交
package lucene01;

import java.io.File;
import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
import org.wltea.analyzer.lucene.IKAnalyzer;

public class FirstDemo2 {
    // 创建索引
    @Test
    public void testSearch() throws Exception {
        String baseURL="http://localhost:8081/solr/collection1";    
        HttpSolrServer httpSolrServer = new HttpSolrServer(baseURL);
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", "liuzhonghua");
        doc.addField("name", "刘中华");
        httpSolrServer.add(doc);
        httpSolrServer.commit();
    }


}

删除大体思路

得到连接,根据条件删除,后面是时间(条件也可以是*:* 表示全部)

 @Test
    public void testSearch2() throws Exception {
        String baseURL="http://localhost:8081/solr/collection1";    
        HttpSolrServer httpSolrServer = new HttpSolrServer(baseURL);
        httpSolrServer.deleteByQuery("name:刘中华", 100);
 }

查询大体思路

 @Test
    public void testSearch3() throws Exception {
        String baseURL="http://localhost:8081/solr/collection1";    
        HttpSolrServer httpSolrServer = new HttpSolrServer(baseURL);
        //new 一个查询对象
        SolrQuery solrQuery = new SolrQuery();
        //向查询对象里面增加条件   (增加基本的查询条件,想当于   solrQuery.set("q","name:刘中华");)
        solrQuery.setQuery("name:刘中华");
        //增加过滤条件
//      solrQuery.set("fq","desc:程序员");
        //价格排序
//      solrQuery.addSort("price",ORDER.desc);
        //分页
        solrQuery.setStart(0);
        solrQuery.setRows(5);

        //高亮,默认域
        solrQuery.set("df", "name");
        //指定只查询某个域
        solrQuery.set("fl", "id,name");
        //高亮显示,开启高亮
        solrQuery.setHighlight(true);
        //指定高亮域
        solrQuery.addHighlightField("name");
        //指定前缀,后缀
        solrQuery.setHighlightSimplePre("<span style='color:red'>");
        solrQuery.setHighlightSimplePost("</span>");
        //执行查询,得到结果集,同时也得到高亮部分的结果集
        QueryResponse query = httpSolrServer.query(solrQuery);
        SolrDocumentList doc = query.getResults();
        Map<String, Map<String, List<String>>> highlighting = query.getHighlighting();
        //遍历
        System.out.println(doc.getNumFound());
        for(SolrDocument d : doc){
            System.out.println(d.get("name"));
            System.out.println(d.get("id"));
            System.out.println("-----------------");
            Map<String, List<String>> map = highlighting.get(d.get("id"));
            List<String> list = map.get("name");
            System.out.println(list.get(0));
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发疯的man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值