Solr入门(三)Solr字段/索引/中文分词
前言
本章讲解Solr字段的操作
方法
1.概念
我们知道,我们要查找的一定是数据库中的某些字段。那么,我们需要在Solr中创建同样的字段来供我们的服务器进行查找,同时也是相当于表的字段,方便以后创建索引数据,如此才能缓解我们服务器的压力,这也是使用Solr的关键所在。
2.新建Solr字段
首先我们来看一下User.java的配置:
如此,我们需要向solr中添加三个字段,分别为id,username,password
由于id字段默认就存在,所以无需进行设置。
看到这个界面就哦了,你的字段顺利的创建完成。
3.创建示例索引数据
通过查询,我们成功的发现了我们添加的索引数据:
4.通过Java查询添加进入的数据
前提:solr支持多门语言,如果要支持Java,那么需要导入Java相关的jar包
编写如下代码进行测试:
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
测试结果如下:
我们发现,搜索username为jwang可以查找到一条数据。
但是,你仅仅查询"j"这个单词是无法查询到这条数据的,这是为什么呢?
Solr进行模糊查询的时候,是按照类型分词器进行查询,也就是说我们设置的类型是string,那么则按照string分词器进行查询。
这就意味着你只能通过jwang查询到这个数据。
那么中文的时候是如何分词的呢,我们可以亲自去试验一下:
如此分词十分的不好!!!
附录:
一、加入中文分词器进行中文分词
下载上面的jar包放入该目录下:
对如下配置文件进行修改
在<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,你会发现多了一种类型:
使用该类型进行中文分词如下:
这就十分完美了,通过以上字段都可以准确的查询到这条数据。