文档章节

Solr 5.3.0集成mmseg4j、tomcat部署、Solrj 5.3.0使用

liuxw0226
 liuxw0226
发布于 2015/10/24 16:40
字数 811
阅读 2995
收藏 21

环境:Jdk 1.7    Solr 5.3.0    Tomcat 7    mmseg4j-solr-2.3.0

1、Solr环境搭建

1.解压solr 5.3.0

2.新建solr_home,将解压文件中的 server/solr 文件夹的复制到solr_home

3.配置solr_home。在solr_home/solr中新建应用 mysolr

4.将solr_home/solr/configsets/sample_techproducts_configs中的conf文件夹复制到mysolr中

5.在mysolr目录中新建core.properties内容为name=mysolr   (solr中的mysolr应用)



6.以tomcat 7为solr容器,解压tomcat

7.将solr-5.3.0\server中的solr-webapp复制到tomcat的webapps目录,重命名为solr


8.复制文件

(1)将以下内容复制到tomcat/webapps/solr/WEB-INF/lib文件夹中

(2)将log4j.properties复制到tomcat/webapps/solr/WEB-INF/classes文件夹中(新建classes)

9.配置solr项目中的web.xml,打开 env-entry节点,配置solr_home



10.启动tomcat浏览器输入http://localhost:8080/solr


11.选择刚在solr_home中建的mysolr的应用、测试分词、默认分词器对中文支持不好




二、配置中文分词器(mmseg4j)

mmseg4j-solr-2.3.0支持solr5.3

1.将两个jar包考入tomcat中solr项目里的lib文件内


2.配置solr_home中mysolr域的schema.xml

新增:

<fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100">

<analyzer>

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>

</analyzer>

</fieldtype>

<fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100">

<analyzer>

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" />

</analyzer>

</fieldtype>

<fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100">

<analyzer>

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="n:/custom/path/to/my_dic" />

</analyzer>

</fieldtype>



3.重启tomcat测试分词:(选择刚刚定义的textMaxWord


修改solr_home中mysolr域的schema.xml,新增要用到mmseg4j分词索引的字段 content_test  分词器选择定义好的textMaxWord


<field name="content_test" type="textMaxWord" indexed="true" stored="true" multiValued="true"/>



三、Java调用Solr 5.3


package myjava.cn.dx.solr;

import org.apache.solr.client.solrj.*;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
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;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * solr 5.3.0
 * Created by daxiong on 2015/10/23.
 */
public class MySolr {

    //solr url
    public static final String URL = "http://localhost:8080/solr";
    //solr应用
    public static final String SERVER = "mysolr";
    //待索引、查询字段
    public static String[] docs = {"Solr是一个独立的企业级搜索应用服务器",
                                    "它对外提供类似于Web-service的API接口",
                                    "用户可以通过http请求",
                                     "向搜索引擎服务器提交一定格式的XML文件生成索引",
                                    "也可以通过Http Get操作提出查找请求",
                                    "并得到XML格式的返回结果"};

    public static SolrClient getSolrClient(){
        return new HttpSolrClient(URL+"/"+SERVER);
    }

    /**
     * 新建索引
     */
    public static void createIndex(){
        SolrClient client = getSolrClient();
        int i = 0;
        List<SolrInputDocument> docList = new ArrayList<SolrInputDocument>();
        for(String str : docs){
            SolrInputDocument doc = new SolrInputDocument();
            doc.addField("id",i++);
            doc.addField("content_test", str);
            docList.add(doc);
        }
        try {
            client.add(docList);
            client.commit();
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    };

    /**
     * 搜索
     */
    public static void search(){
        SolrClient client = getSolrClient();
        SolrQuery query = new SolrQuery();
        query.setQuery("content_test:搜索");
        QueryResponse response = null;
        try {
            response = client.query(query);
            System.out.println(response.toString());
            System.out.println();
            SolrDocumentList docs = response.getResults();
            System.out.println("文档个数:" + docs.getNumFound());
            System.out.println("查询时间:" + response.getQTime());
            for (SolrDocument doc : docs) {
                System.out.println("id: " + doc.getFieldValue("id") + "      content: " + doc.getFieldValue("content_test"));
            }
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        //createIndex();
        search();
    }
}



maven配置 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>myjava</groupId>
  <artifactId>cn.dx</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>cn.dx</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr-solrj</artifactId>
      <version>5.3.0</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
    </dependency>
    
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-nop</artifactId>
      <version>1.7.7</version>
    </dependency>
  </dependencies>
</project>

 



© 著作权归作者所有

liuxw0226

liuxw0226

粉丝 9
博文 19
码字总数 8419
作品 0
顺义
后端工程师
私信 提问
加载中

评论(5)

liuxw0226
liuxw0226 博主

引用来自“xiangzi513”的评论

java.lang.UnsupportedClassVersionError: org/apache/solr/client/solrj/SolrServerException : Unsupported major.minor version 51.0
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
  at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
  at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Exception in thread "main"

为什么代码会报上面的这种错误?

你用的哪个版本jdk?
x
xiangzi513
java.lang.UnsupportedClassVersionError: org/apache/solr/client/solrj/SolrServerException : Unsupported major.minor version 51.0
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
  at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
  at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Exception in thread "main"

为什么代码会报上面的这种错误?
scott12
scott12
太棒了!感谢解决了我问题!4
huangningren
huangningren
很棒
19492049
19492049
路过
Solr Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)

Apache Solr 介绍 Solr 是什么? Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是...

David_Tio
2013/12/05
1K
0
Solr JAVA客户端SolrJ 4.9使用示例教程

简介 SolrJ是操作Solr的JAVA客户端,它提供了增加、修改、删除、查询Solr索引的JAVA接口。SolrJ针对Solr提供了Rest 的HTTP接口进行了封装,SolrJ底层是通过使用httpClient中的方法来完成Sol...

cloud-coder
2014/08/21
3.6K
0
Solr 按日期facet 差8小时问题解决

项目中使用solrj来操作solr,日期solr会自动转换: 1.solrj在提交到solr时,时间会因为时区问题减少八小时 2.solr接收到时间后,存为底层lucene索引时时间类型为long型,是正确的时区时间,但...

zachary124
2014/06/24
726
4
Apache Solr 之 使用SolrJ操作索引库

Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互。最基本的功能就是管理Solr索引,包括添加、更新、删除和查询等。对于一些比较基础的应用,用S...

空云万里晴
2014/12/09
6.4K
1
Solr环境搭建及IK分词的集成及solrJ的调用(三)【完结】

前两篇的连接到这里: Solr环境搭建及IK分词的集成及solrJ的调用(一) http://my.oschina.net/zimingforever/blog/120732 Solr环境搭建及IK分词的集成及solrJ的调用(二) http://my.oschina.n...

王小明123
2013/04/10
3.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

001-ELKStack之Elasticearch

ELKStack 之 Elasticsearch ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故...

伟大源于勇敢的开始
22分钟前
3
0
Kotlin基础语法学习

安装好安卓studio,以及插件支持Kotlin 就可以在创建项目的时候选择 Kotlin语言了。 https://www.jianshu.com/p/4ab13691d681 参考手册: https://www.runoob.com/kotlin/otlin-android-setu...

T型人才追梦者
今天
6
0
java实现简单计算器

1.概述 之前作者写过一篇文章,也是关于计算器的,用的是C++与Qt,链接在这里 这次用java的swing写的(这差距好像有点大,好吧是qt太强了). 先上图: 2.UI 总体布局使用流布局. (1)文本框 文本框就...

Blueeeeeee
今天
9
0
纯CSS实现DIV悬浮(固定位置)

纯CSS实现的DIV悬浮效果(固定位置),兼容常用的浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗等。效果如下: 实现代码: <!DOCTYPE html> <html> <head> <meta ...

独钓渔
今天
6
0
OSChina 周二乱弹 —— 给我来个女菩萨

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐#分享XXXTENTACION/Travis Barker的单曲《Pain = BESTFRIEND》: 《Pain = BESTFRIEND》- XXXTENTACION/...

小小编辑
今天
159
4

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部