Solr是什么?

Solr是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java来实现。服务器通信使用标准的HTTPXML,所以如果使用Solr 了解Java 技术会有用却不是必须的要求。

Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。

Solr的Python库pysolr

pysolr是一个对Solr服务进行了封装的Python库,它提供了一个执行solr查询服务的接口。

它支持solr的以下几种操作:

  • 基本的查询、修改、删除操作
  • 索引优化
  • 超时支持

pysolr的基本用法

通过一个例子来展示其基本用法:

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
import pysolr
# 创建一个solr实例,timeout为可选参数
solr = pysolr.Solr('http://localhost:8983/solr/', timeout=10)
# 添加数据
solr.add([
{
"id": "doc_1",
"title": "A test document",
},
{
"id": "doc_2",
"title": "The Banana: Tasty or Dangerous?",
},
])
# 优化索引,以加快查询速度
solr.optimize()
# 进行查询
results = solr.search('bananas')
# 存储结果保存在results中
print("Saw {0} result(s).".format(len(results)))
# 循环获取结果
for result in results:
print("The title is '{0}'.".format(result['title']))
# 更加高级的查询
results = solr.search('bananas', **{
'hl': 'true',
'hl.fragsize': 10,
})
# 也可以进行模糊查询
similar = solr.more_like_this(q='id:doc_2', mltfl='text')
# 删除文档
solr.delete(id='doc_1')
# 删除所有文档
solr.delete(q='*:*')