文章目录
  1. 1. compass
  2. 2. solr
  3. 3. solrj

compass

数据库,以服务的形式对外公开, 代表跟数据进行交互走网络, 使其他的语言客户端都能调用

Compass 对 Lucence 进行封装, 以面向对象的方式操作 Lucence

solr

solr 当做搜索引擎服务器封装 LucenceDao, 底层是对索引库的操作, 对外提供 Web-service API 接口, 通过 http 协议进行调用.

通过各种 API 可以让你的应用使用搜索服务.也支持主从, 热换库的操作.

通过 localhost:8983/solr 索引进行 CRUD 操作

post.jar包可以与solr服务器进行交互

1
2
3
4
5
6
7
8
9
10
# 提交索引 hd.xml
# localhost:8983/solr/collection1/select?q=高端&wt=json 查询
# localhost:8983/solr/collection1/select?q=高端&wt=json&fl=title 查询只返回title字段
# sort=id 按id排序
java -jar post.jar hd.xml

# 删除 id 为 1 的索引
java -Ddata=args -Dcommit=false -jar post.jar "<delete><id>1</id></delete>"
# 提交
java -jar post.jar -

solrj

通过 solrj 向 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
82
83
public void testInsert(){
  // 连接 solr 服务器
  SolrServer server = new HttpSolrServer("http://localhost:8983/solr");
  
  SolrInputDocument document = new SolrInputDocument();
  List<SolrInputDocument> collection = new ArrayList();
  
  document.addField("id", 1);
  document.addField("title", "csdn");
  document.addField("cctv", "bjtx");
  
  
  collection.add(document);
  
  server.add
  
  server.add(collection);
  server.commit();
}

public void textUpdate(){
  // 连接 solr 服务器
  SolrServer server = new HttpSolrServer("http://localhost:8983/solr");
  
  SolrInputDocument document = new SolrInputDocument();
  List<SolrInputDocument> collection = new ArrayList();
  
  document.addField("id", 1);
  document.addField("title", "更新值");
  
  collection.add(document);
  
  server.add
  
  server.add(collection);
  server.commit();
}

public void testDelete(){

}

public void testQuery(){
  // 连接 solr 服务器
  SolrServer server = new HttpSolrServer("http://localhost:8983/solr");
  SolrQuery param = new SolrQuery();
  params.setQuery(":*");
  params.addSort("id", ORDER.desc);
  QueryResponse response = server.query(param);
  SorlDocumentList list = response.getResult();
  for(SolrDocument document: List) {
    // 出来的是数组
    String title = document.get("title").toString();
  }
}

// 高亮
public void testHightLight(){
  // 连接 solr 服务器
  SolrServer server = new HttpSolrServer("http://localhost:8983/solr");
  SolrQuery param = new SolrQuery();
  params.setQuery("title:传智播客");
  // 开启高亮
  param.setHightLight(true);
  params.setHightLightSimplePre("<font color='red'>");
  params.setHightLightSimplePost("</font>");
  // 添加需要高亮的字段
  params.setParam("hl.fl", "title");

  params.addSort("id", ORDER.desc);
  QueryResponse response = server.query(param);
  SorlDocumentList list = response.getResult();
  //第一个map的 key 是document的id
  //第二个map的 key 是高亮的字段
  // Map<String, Map<String, List<String>>>
  for(SolrDocument document: List) {
    Map<String, List<String>> listmap = maplist.get(id);
    List<String> listhight = listmap.get("title");
    for(String s:listhight) {
      System.out.println(s);
    }
  }
}

schema.xml 配置字段

1
2
3
<!-- 通过 text进行 多个字段的搜索 -->
<copyField source="cat" dest="text"/>
<copyField source="dog" dest="text"/>

solrconfig 配置solr缓存jar包

  • 配置集群
  • 索引库的存放位置
  • 自定义分词器
  • 请求处理器, 如将数据库导入到索引库的请求处理器

data-config.xml 配置数据库连接

TODO 配置文件说明

文章目录
  1. 1. compass
  2. 2. solr
  3. 3. solrj