Solr入门(三)Solr字段/索引/中文分词

前言

      本章讲解Solr字段的操作

方法

1.概念

我们知道,我们要查找的一定是数据库中的某些字段。那么,我们需要在Solr中创建同样的字段来供我们的服务器进行查找,同时也是相当于表的字段,方便以后创建索引数据,如此才能缓解我们服务器的压力,这也是使用Solr的关键所在。

2.新建Solr字段

首先我们来看一下User.java的配置:

Solr入门(三)Solr字段/索引/中文分词

如此,我们需要向solr中添加三个字段,分别为id,username,password

Solr入门(三)Solr字段/索引/中文分词

由于id字段默认就存在,所以无需进行设置。

Solr入门(三)Solr字段/索引/中文分词 

看到这个界面就哦了,你的字段顺利的创建完成。

3.创建示例索引数据

Solr入门(三)Solr字段/索引/中文分词

通过查询,我们成功的发现了我们添加的索引数据:

Solr入门(三)Solr字段/索引/中文分词 

4.通过Java查询添加进入的数据

前提:solr支持多门语言,如果要支持Java,那么需要导入Java相关的jar包

Solr入门(三)Solr字段/索引/中文分词

编写如下代码进行测试:

import cn.edu.ccut.bo.User;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.junit.Test;

import java.util.List;

/**
 * @Auther:jwang
 * @Date:2019/2/6
 * @Description:PACKAGE_NAME
 * @Version 1.0
 **/
public class SolrTest {
    private static final String URL = "http://localhost:8983/solr/core1";

    @Test
    public void testSolrQuery() throws Exception{
        SolrClient client = new HttpSolrClient.Builder(URL).build();
        SolrQuery query = new SolrQuery();
        query.set("q","username:jwang");
        QueryResponse rsp = client.query(query);
        List<User> beans = rsp.getBeans(User.class);
        System.out.println(beans);
    }
}

 首先需要在User.java中添加注解@Field

Solr入门(三)Solr字段/索引/中文分词

测试结果如下:

Solr入门(三)Solr字段/索引/中文分词 

我们发现,搜索username为jwang可以查找到一条数据。

但是,你仅仅查询"j"这个单词是无法查询到这条数据的,这是为什么呢?

Solr进行模糊查询的时候,是按照类型分词器进行查询,也就是说我们设置的类型是string,那么则按照string分词器进行查询。

Solr入门(三)Solr字段/索引/中文分词

这就意味着你只能通过jwang查询到这个数据。

那么中文的时候是如何分词的呢,我们可以亲自去试验一下:

Solr入门(三)Solr字段/索引/中文分词 

如此分词十分的不好!!!

附录:

一、加入中文分词器进行中文分词

Solr入门(三)Solr字段/索引/中文分词

下载上面的jar包放入该目录下:

Solr入门(三)Solr字段/索引/中文分词

 对如下配置文件进行修改

Solr入门(三)Solr字段/索引/中文分词 

在<schema>标签下加入如下内容:

<fieldType name="text_ik" class="solr.TextField">  
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>  
</fieldType>  
<field name="text_ik"  type="text_ik" indexed="true"  stored="true"  multiValued="false" />

重启solr,你会发现多了一种类型:

Solr入门(三)Solr字段/索引/中文分词

使用该类型进行中文分词如下:

Solr入门(三)Solr字段/索引/中文分词 

这就十分完美了,通过以上字段都可以准确的查询到这条数据。