solr服务器配置

solr 入门 教程

solr是啥?

  • Solr是一个类似于Google或者Bing的全文检索引擎, Solr是与搜索引擎优化(SEO)相关联的。很多公司也使用elasticsearch作为搜索引擎。
  • 以前的solr,本质上是一组servlet,必须放进Tomcat才能运行,从solr5开始,它已经自带了jetty,配置的好,完全可以独立使用,并且应付大量并发请求,具体的架构我们后面会讲到,现在先来进行solr的安装配置。

    solr安装

  • 1.下载tomcat solr
  • 2.在bin下运行 ./solr start
  • 3.教程确认可行 导入数据库数据并查询


中文分词器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Solr分词顺序]
Solr建立索引和对关键词进行查询都得对字串进行分词,在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。分词的顺序如下:
索引
1:空格whitespaceTokenize
2:过滤词(停用词,如:on、of、a、an等) StopFilter
3:拆字WordDelimiterFilter
4:小写过滤LowerCaseFilter
5:英文相近词EnglishPorterFilter
6:去除重复词RemoveDuplicatesTokenFilter
查询
1:查询相近词
2:过滤词
3:拆字
4:小写过滤
5:英文相近词
6:去除重复词
---------------------
作者:jakeswang
来源:CSDN
原文:https://blog.csdn.net/jakeswang/article/details/50598398?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
  • 安装见教程

    遇坑集合

    1. ava.lang.ClassNotFoundException: org.apache.solr.handler.dataimport.DataImportHandler 教程

1.创建core 后 运行slor 并在项目中配置

2.开启高亮 solrParams.setHighlight(true);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@ResponseBody
@RequestMapping(value = "/testHighlight")
public void testHighlight() throws SolrServerException {
// 以后参数都是通过这个对象去构造...
SolrQuery solrParams = new SolrQuery();
solrParams.setQuery("stu_name:测试");
// 开启高亮
solrParams.setHighlight(true);
// 高亮显示的格式
solrParams.setHighlightSimplePre("<font color='red'>");
solrParams.setHighlightSimplePost("</font>");
// 我需要那几个字段进行高亮
solrParams.setParam("hl.fl", "stu_name");
QueryResponse queryResponse = this.httpSolrServer.query(solrParams);
// 返回所有的结果...
SolrDocumentList documentList = queryResponse.getResults();
Map<String, Map<String, List<String>>> maplist = queryResponse.getHighlighting();
// 返回高亮之后的结果..
for (SolrDocument solrDocument : documentList) {
Object id = solrDocument.get("id");
Map<String, List<String>> fieldMap = maplist.get(id);
List<String> stringlist = fieldMap.get("stu_name");
System.out.println(stringlist);
}
}
}
---------------------
作者:z_alvin
来源:CSDN
原文:https://blog.csdn.net/z_alvin/article/details/79305000?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

3.java 调用solr 实现索引的增删查改 教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
@Controller
@RequestMapping("/solr")
public class SpringSolrController {
@Autowired
private HttpSolrServer httpSolrServer;

/**
* 测试方法
*
* @param id
* @return
* @throws SolrServerException
*/
@ResponseBody
@RequestMapping(value = "/getStudent")
public Student getStudent(Long id) throws SolrServerException {

// 创建查询条件
SolrQuery query = new SolrQuery();
query.setQuery("id:" + id);
// 查询并返回结果
QueryResponse queryResponse = this.httpSolrServer.query(query);
return (Student) queryResponse.getBeans(Student.class);
}

/**
* 新增、修改
*
* @param student
* @throws SolrServerException
* @throws IOException
*/
@ResponseBody
@RequestMapping(value = "/addStudent")
public void addStudent(@RequestBody Student student) throws SolrServerException, IOException {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", student.getId());
doc.addField("stu_name", student.getStu_name());
doc.addField("age", student.getAge());
doc.addField("stu_school", student.getStu_school());
UpdateResponse response = this.httpSolrServer.add(doc);
this.httpSolrServer.commit(); // 提交
System.out.println(response);
}

/**
* 删除
*
* @param student
* @throws SolrServerException
* @throws IOException
*/
@ResponseBody
@RequestMapping(value = "/delStudent")
public void delStudent(@RequestBody Student student) throws SolrServerException, IOException {
UpdateResponse response = this.httpSolrServer.deleteById(student.getId());
this.httpSolrServer.commit(); // 提交
System.out.println(response);
}

@ResponseBody
@RequestMapping(value = "/searchStudentList")
public void searchStudentList() throws SolrServerException {
// 相当于QueryParser
SolrQuery query = new SolrQuery("*:*");
query.setStart(1);
query.setRows(3);
QueryResponse res = this.httpSolrServer.query(query);
// 可以直接查询相应的bean对象,但是不是很常用
// 使用这种方式无法获取总数量
List<Student> list = res.getBeans(Student.class);
System.out.println("当前总数:" + list.size());
for (Student stu : list) {
System.out.println(stu.getId() + "#" + stu.getStu_name() + "#" + stu.getAge() + "#" + stu.getStu_school());
}
}
---------------------
作者:z_alvin
来源:CSDN
原文:https://blog.csdn.net/z_alvin/article/details/79305000?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

idea 启动失败 说插件Android初始化错误

  • 删除插件Android 重启 linux下插件所在目录 /opt/idea/plugins