阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Solr示例

199次阅读
没有评论

共计 3254 个字符,预计需要花费 9 分钟才能阅读完成。

Lucene 是 apache 软件基金会提供的一款开源全文检索引擎。Solr 是在 lucene 基础上封装得更易于使用的全文检索服务器并提供了相关 api。

本文使用 solr3.4,做一个使用示例,已调试通过。更高版本可能需要更改代码。

1. 启动 solr。解开 solr 压缩包后,在 solr_home\dist 下有个 war 包。一种方式是把这个 war 包部署到 web 容器里。我这里图省事,就直接用自带的 jetty。启动方式是在 example 目录下,运行 Java –jar start.jar。后台会显示默认占用 8983 端口。此时,访问 http://localhost:8983/solr 应该是有响应了。

2. 向 solr 里输入数据。一种方式就是使用 api(见后面代码),还有一种方式是用命令行对一些磁盘文件进行索引。如在 exampledoc 目录下执行:java–jar post.jar *.xml。

下面代码是展示数据录入、查询等功能了。工程需要引入以下一些 jar 包:
apache-solr-solrj-3.4.0.jar、commons-httpclient-3.1.jar、commons-codec-1.4.jar、slf4j-api-1.6.1.jar、commons-logging-1.1.3.jar

import java.util.*;

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

import org.apache.solr.client.solrj.impl.*;

import org.apache.solr.client.solrj.response.*;

import org.apache.solr.common.*;

public class SolrTest {

    public static void main(String[] args)throws Exception{

        String url = “http://localhost:8983/solr”;

        SolrServer server = new CommonsHttpSolrServer(url);

         

        server.deleteByQuery(“*:*”);

         

        SolrInputDocument doc1 = new SolrInputDocument();

        doc1.addField(“id”, “book1”);

        doc1.addField(“name”, “ 倚天屠龙记 ”);

        doc1.addField(“price”, 29);

         

        SolrInputDocument doc2 = new SolrInputDocument();

        doc2.addField(“id”, “book2”);

        doc2.addField(“name”, “ 神雕侠侣 ”);

        doc2.addField(“price”, 20);

         

        SolrInputDocument doc3 = new SolrInputDocument();

        doc3.addField(“id”, “book3”);

        doc3.addField(“name”, “ 天龙八部 ”);

        doc3.addField(“price”, 33.8);

         

        SolrInputDocument doc4 = new SolrInputDocument();

        doc4.addField(“id”, “book4”);

        doc4.addField(“name”, “ 射雕英雄传 ”);

        doc4.addField(“price”, 25.5);

         

        List<SolrInputDocument> docs = new  ArrayList<SolrInputDocument>();

        docs.add(doc1);

        docs.add(doc2);

        docs.add(doc3);

        docs.add(doc4);

        server.add(docs);

        server.commit();

        SolrQuery query = new SolrQuery();

        query.setQuery(“name: 天 ”);

        query.setStart(0);

        query.setRows(5);

        query.addSortField(“price”, SolrQuery.ORDER.desc);

         

        query.setHighlight(true);

        query.addHighlightField(“name”);

        query.setHighlightSimplePre(“<font color=\”red\”>”);

        query.setHighlightSimplePost(“</font>”);

        query.set(“hl.usePhraseHighlighter”,true);

        query.set(“hl.highlightMultiTerm”,true);

        query.set(“hl.snippets”,3);

        query.set(“hl.fragsize”, 5);

                 

        QueryResponse rsp = server.query(query);

        System.out.println(rsp);

         

        SolrDocumentList docsList = rsp.getResults();

         

        // 获取高亮结果

        Map<String,Map<String,List<String>>> hl = rsp.getHighlighting();

         

        for(Iterator<SolrDocument> doc =docsList.iterator();doc.hasNext();){

            SolrDocument d = doc.next();

            System.out.print(d.getFieldValue(“id”)+”:”);

            System.out.println(d.getFieldValue(“name”));

        }

    }

}

Solr3.6.1 在 Tomcat6 下的环境搭建 http://www.linuxidc.com/Linux/2013-01/77664.htm

基于 Tomcat 的 Solr3.5 集群部署 http://www.linuxidc.com/Linux/2012-12/75297.htm

在 Linux 上使用 Nginx 为 Solr 集群做负载均衡 http://www.linuxidc.com/Linux/2012-12/75257.htm

Linux 下安装使用 Solr http://www.linuxidc.com/Linux/2012-10/72029.htm

在 Ubuntu 12.04 LTS 上通过 Tomcat 部署 Solr 4 http://www.linuxidc.com/Linux/2012-09/71158.htm

Solr 实现 Low Level 查询解析(QParser)http://www.linuxidc.com/Linux/2012-05/59755.htm

基于 Solr 3.5 搭建搜索服务器 http://www.linuxidc.com/Linux/2012-05/59743.htm

Solr 3.5 开发应用教程 PDF 高清版 http://www.linuxidc.com/Linux/2013-10/91048.htm

Solr 4.0 部署实例教程 http://www.linuxidc.com/Linux/2013-10/91041.htm

Solr 的详细介绍 :请点这里
Solr 的下载地址 :请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计3254字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中