使用pysolr库操作solr(一)

1.环境准备
首先需要在本地安装好solr和pysolr。
solr现在更新到了6代,出于稳定性和pysolr兼容性的考虑,选择使用5.0.0版本,下载地址:http://archive.apache.org/dist/lucene/solr/5.0.0/。 至于如何安装以及对solr的初次体验,可以看我之前转载的文章:
【Apache Solr入门教程(初学者之旅) 】
http://blog.csdn.net/sinat_33455447/article/details/56834344
pysolr则使用pip安装,如果没有安装pip的筒子可以去github上获得源码:https://github.com/django-haystack/pysolr

2.操作
如果经过以上步骤,相信你已经建立起了一个jcg核心。接下来,先使用pysolr连接上solr(本地的solr需要先开起来):

from __future__ import print_function
import pysolr
#这个url很重要,不能填错了
solr = pysolr.Solr('http://localhost:8983/solr/jcg/', timeout=10)

由于之前已经导入的是csv数据,增加一下数据的时候需要按照最开始的格式,否则会报错。
这里写图片描述

#错误的数据格式
solr.add([
    {
        "id": "doc_3",
        "name": "A test document",
        "food":"dsaklj"
    }
])

出现如下报错:
pysolr.SolrError: Solr responded with an error (HTTP 400): [Reason: ERROR: [doc=doc_3] unknown field ‘food’]

#正确的数据格式,可以少项
solr.add([
    {
        "id": "doc_1",
        "name": "A test document",
        "cat": "book",
        "price": "7.99",
        "inStock": "T",
        "author": "George R.R. Martin",
        "series_t": "A Song of Ice and Fire",
        "sequence_i": "1",
        "genre_s": "fantasy",
    }
])

搜索数据

#搜索jcg中的全部数据
results = solr.search('*:*')

#搜索id为doc_1的数据
doc1 = solr.search('id:doc_1')

返回的结果可以看做一个list

查看数据
这里写图片描述


#查看长度
print (len(results))
#打印所有文档
print (results.docs)
#打印文档中的name属性值
for result in results:
    print (result['name'])

删除数据

#删除id为doc_1的数据
solr.delete(id='doc_1') 

#删除所有数据
solr.delete(q='*:*')

以上就是使用pysolr的一些基本操作

猜你喜欢

转载自blog.csdn.net/sinat_33455447/article/details/56848791