sorl 查询 跟 mybatisboot集成sorl

sorl 查询 跟 mybatisboot集成sorlsolr高可用版本核(core):是用于存储json格式的数据,等价于mysql中数据库的概念文档:一个json对象就是一个文档相同属性的json数组集合就是一个表安装solrdockerrun–namemy_solr-id–nethost-tsolr:5.5.5检测端口:netstat-aon|grep8983下载yum-yinstallne…

solr是以lucene为内核开发的企业级搜索应用 应用程序可以通过http请求方式来提交索引,查询索引,提供了比lucene更丰富的查询语言,是一个高性能,高可用环境全文搜索引擎

solr高可用版本

核(core):是用于存储json格式的数据,等价于mysql中数据库的概念
文档:一个json对象就是一个文档 相同属性的json数组集合就是一个表
安装solr

docker run --name my_solr -id --net host -t solr:5.5.5

检测端口:
netstat -aon | grep 8983
下载
yum -y install net-tools telnet
创建core

  docker exec -it --user=solr my_solr bin/solr create_core -c mycore

创建完成后提示:在这里插入图片描述

q表示安装什么字段来搜索
字段名:值 (where 列名=值)
支持or 和and语法
比如 i:1 and j:2
比如 i[1 to 10]

sorl 不支持中文 需要配置中文分词器

需要 的pom文件

<dependencies>
  
	<dependency>
	    <groupId>com.janeluo</groupId>
	    <artifactId>ikanalyzer</artifactId>
	    <version>2012_u6</version>
	    //剔除原版本
	    <exclusions>
	    	<exclusion>
	    		<groupId>org.apache.lucene</groupId>
   				<artifactId>lucene-queryparser</artifactId>
	    	</exclusion>
	    	<exclusion>
	    		<groupId>org.apache.lucene</groupId>
   				<artifactId>lucene-core</artifactId>
	    	</exclusion>
	    	<exclusion>
	    		<groupId>org.apache.lucene</groupId>
   				<artifactId>lucene-analyzers-common</artifactId>
	    	</exclusion>
	    </exclusions>
	</dependency>
	//添加新版本
	<dependency>
		<groupId>org.apache.lucene</groupId>
   		<artifactId>lucene-queryparser</artifactId>
   		<version>5.5.5</version>
	</dependency>
	<dependency>
		<groupId>org.apache.lucene</groupId>
   		<artifactId>lucene-core</artifactId>
   		<version>5.5.5</version>
	</dependency>
	<dependency>
		<groupId>org.apache.lucene</groupId>
   		<artifactId>lucene-analyzers-common</artifactId>
   		<version>5.5.5</version>
	</dependency>
   
</dependencies>

找到 IKAnalyzer 这个类 修改他的createComponents方法 把in 去掉
因为他的子方法还要 in 所以要修改IKTokenizer方法

1 创建 org.wltea.analyzer.lucene 包
在复制IKAnalyzer 的类 修改他的 createComponents 方法

2修改他的子方法IKTokenizer里面的构建方法 去掉super(in)

打开ikanalyzer-2012_u6.jar jar包
替换 IKAnalyzer.class 跟 IKTokenizer.class 文件

把jar包 拷贝到/opt/solr/server/solr-webapp/webapp/WEB-INF/lib目录

把/opt/solr/server/solr/mycore/conf/managed-schema 修改这个文件的数据

加上
找到相应的字段

<fieldType name="text_ik" class="solr.TextField" >
      <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>   
      <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> 
   </fieldType>

<dynamicField name="*_ik" type="text_ik" indexed="true" stored="true"/>

中文分词器配置Ok了

拷贝支持导入的jar
cp /opt/solr/dist/solr-dataimporthandler-5.5.5.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib

cp /opt/solr/dist/solr-dataimporthandler-extras-5.5.5.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib
//前2个jar包solr自带
//需要数据库连接jar包
docker cp ./mysql-connector-java-5.1.24.jar my_solr:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib

进入mycore/conf目录 新建连接数据的四要素 /opt/solr/server/solr/mycore/conf/data-c.xml
内容:

 <?xml version="1.0" encoding="UTF-8"?> 
 
<dataConfig>  
  
  <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.3:3306/test" user="root" password="123456" batchSize="-1" />  
    <document>  
        
     <entity name="book" pk="newid"  dataSource="source1"   
                query="select * from  mynew" >
    
        <field column="newid" name=""/>  
        
    <field column="newtitle" name="title_ik"/>  
   
     </entity>

  </document> 
 
</dataConfig>

修改solrconfig.xml 指定data-c.xml文件
docker cp my_solr:/opt/solr/server/solr/mycore/conf/solrconfig.xml .
内容

 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
 
     <lst name="defaults">  
       				//你的文件
  	<str name="config">data-c.xml</str>  
   
   </lst> 
 
 </requestHandler>

在拷贝回去
docker cp ./solrconfig.xml my_solr:/opt/solr/server/solr/mycore/conf

spring boot 集成 solr
pom文件

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-solr</artifactId>
        </dependency>

    </dependencies>

application.yml文件

spring:
  data:
    solr:
      host: http://地址:8983/solr
server:
  port: 8888

html 用 jquery 实现:

 <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
    <script>
        function query() {
            $.ajax({
                url: 'kymost',
                dataType:'json',
                data:'kyname='+ $("#kyname").val(),
                type:'get',
                success:function (r) {
                    $("#mynews").text(JSON.stringify(r));
                }
            })

        }
    </script>
</head>
<body>
        <input type="text" name="kynames" id="kyname">
        <button onclick="query()">搜索</button>
 <div id="mynews"></div>
</body>

main 方法

@SpringBootApplication
public class SoleMain {

    //需要的bean
    @Bean
    public SolrTemplate solrTemplate(SolrClient client) {
        return new SolrTemplate(client);
    }
    public static void main(String[] args) {
        SpringApplication.run(SoleMain.class,args);
    }
}

属性类

//solr 库名
@SolrDocument(solrCoreName="mycore")
public class Wing {

    private String id;
    //solr 字段名
    @Field(value="myage_ik")
    private String myage ;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getMyage() {
        return myage;
    }
    public void setMyage(String myage) {
        this.myage = myage;
    }
}

链接 solr :

@RestController
public class SolrCont {
	//链接方法
    @Autowired
    private SolrTemplate solrTemplate;
    
    @GetMapping("/kymost")
    public List<Wing> query(String kyname){
        System.out.println(kyname);
        //链接solr  SimpleQuery类加的查询方法
        Page<Wing> query = solrTemplate.query(new SimpleQuery("myage_ik:" + kyname), Wing.class);

        return query.getContent();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11518.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注