文章目录
Solr初识
【一】介绍
Solr是一个高性能,采用Java开发,Solr基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
其实我们大多数人都使用过Solr,也许你不会相信我说的这句话,但是事实却是如此啊 ! 每当你想买自己喜欢的东东时,你可能会打开某宝或者某东,像这样一搜,就能搜到很多东西,你知道你看到的这些数据都来自哪儿吗?百度一下你就知道!这些数据来自哪儿吗?等你了解完Solr后你就知道答案啦!
【二】安装solr
- 准备linux服务器(centos7或者ubuntu)
- 安装tomcat服务器
- 下载solr
1、官网 :http://lucene.apache.org/solr/
2、百度网盘链接:https://pan.baidu.com/s/1POq623aIPB6E7-hRYixC5Q
提取码:26ku - 上传solr包到linux
rz
- 解压solr
tar -zxvf solr-4.10.3 /usr/local/
- 复制文件到tomcat服务器中
1、进入solr文件中
cd /usr/local/solr-4.10.3/example/webapps
2、复制solr.war
cd solr.war /usr/local/tomcat/webapps/
- 解压war包
mkdir solr && unzip solr.war -d solr && rm -rf solr.war
- 修改配置
vim /usr/local/tomcat/webapps/solr/WEB-INF/web.xml
添加以下内容
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-4.10.3/example/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
ps:/usr/local/solr-4.10.3/example/solr这个为路径
- 添加必要的包
cd /usr/local/solr-4.10.3/example/lib/ext/ && cp * /usr/local/tomcat/lib/cd /usr/local/solr-4.10.3/example/lib/ext/
- 启动tomcat
cd /usr/local/tomcat/bin
./startup.sh
- 访问
http://192.168.183.129:8080/solr
【三】添加中文分词器
3.1 GUI的基本使用
3.2 添加中文分词
- 上传文件到linux的/usr/local/
链接:https://pan.baidu.com/s/1d2jWfjFNFo5lACAjPCxF9w
提取码:exyb - 复制文件到相应的位置
1、传到tomcat服务器上
cp /usr/local/IKAnalyzer2012FF_u1.jar /usr/local/tomcat/lib/
2、新建文件
mkdir /usr/local/tomcat/webapps/solr/WEB-INF/classes
3、复制文件到文件夹
cp /usr/local/IKAnalyzer.cfg.xml /usr/local/tomcat/webapps/solr/WEB-INF/classes
cp /usr/local/stopword.dic /usr/local/tomcat/webapps/solr/WEB-INF/classes
- 修改配置文件
vim /usr/local/solr-4.10.3/example/solr/collection1/conf/schema.xml
添加如下的配置:
<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>
- 添加自己的分词库
vim /usr/local/tomcat/webapps/solr/WEB-INF/classes/IKAnalyzer.cfg.xml
- 添加库
touch /usr/local/tomcat/webapps/solr/WEB-INF/classes/ext.dic
添加内容自定义
冯文
静态资源
今天要学习
java
闭关修炼
- 测试
【四】javaBean结合solr
4.1 创建maven项目
4.2 添加依赖
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>8.0.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
4.3 创建javaBean
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {
@Field("id")
private String id;
@Field("studentName")
private String studentName;
@Field("studentAge")
private Integer studentAge;
@Field("studentGrander")
private Integer studentGrander;
}
public class Main {
public static void main(String args[]) throws IOException, SolrServerException {
String url = "http://192.168.183.129:8080/solr";
SolrClient client = new HttpSolrClient.Builder(url).build();
queryStudent(client);
}
public static void delete(SolrClient client) throws IOException, SolrServerException {
client.deleteById("2.me");
client.commit();
}
public static void saveStudent(SolrClient client) throws IOException, SolrServerException {
for (int i = 0; i < 10; i++) {
String id = (i+10)+"";
String studentName = "学生"+i;
Integer studentAge = i+20;
Integer studentGrander = i%2;
client.addBean(new Student(id,studentName,studentAge,studentGrander));
}
client.commit();
}
public static void queryStudent(SolrClient client) throws IOException, SolrServerException {
SolrQuery query = new SolrQuery();
query.set("q","studentName:学生 AND studentAge:[22 TO 27]");
query.set("start",0);
query.set("rows",5);
query.set("sort","studentAge asc");
QueryResponse response = client.query(query);
List<Student> studentList = response.getBeans(Student.class);
System.out.println(studentList);
}
public static void test(SolrClient client) throws IOException, SolrServerException {
SolrInputDocument document = new SolrInputDocument();
document.setField("id","3");
document.setField("name","hong");
client.add(document);
client.commit();
}
}