一.安装并创建core
1.1安装
cd /usr/local/
wget http://mirrors.hust.edu.cn/apache/lucene/solr/7.7.3/solr-7.7.3.tgz
tar -zxvf solr-7.7.3.tgz
# 启动
cd /usr/local/solr-7.7.3/bin
./solr start -force
1.2安装创建core
#### 环境添加core
cd /usr/local/solr-7.7.3/server
# 添加自己的solr core
mkdir new_core
cd /usr/local/solr-7.7.3/server/solr/configsets/_default
cp -r ./conf /usr/local/solr-7.7.3/server/solr/new_core
界面添加core
二.pysolr操作solr
# 需要新建一个new_core不然会报错 步骤1.2
solr = pysolr.Solr('http://127.0.0.1:8983/solr/new_core', always_commit=True, )
# 查看solr是否能ping得通
# print(solr.ping())
2.1插入数据
for i in range(1,2000):
solr.add([
{
"id": "doc_%d"%i,
"title": "A TeST document",
"article": "my name is Cocktail_py%d"%i,
"translation": "Nice to Cocktail_py%d"%i,
},
{
"id": "doc_2",
"title": "The Banana: Tasty or Dangerous?",
"_doc": [
{ "id": "child_doc_1", "title": "peel" },
{ "id": "child_doc_2", "title": "seed" },
]
},
])
# 搜索new_core中的全部数据
results = solr.search('*:*')
print(results.docs)
2.2分页
# 假设一页返回10条数据
# 返回第一页
results = solr.search('*:*', start=0 * 10, rows=10)
# 返回第二页
results = solr.search('*:*', start=1 * 10, rows=10)
print(results.docs)
# 返回第三页
results = solr.search('*:*', start=2 * 10, rows=10)
print(results.docs)
2.3深分页 (基于排序进行)
# https://blog.csdn.net/weixin_42257250/article/details/97107933
# https://blog.csdn.net/asdfsadfasdfsa/article/details/80072533
# results = solr.search(q="""
# *:*
# &sort=id desc
# &cursorMark=*
# """)
results = solr.search(q='*:*', sort="id asc", cursorMark="*")
# 获取原始数据
# raw_rep = results.raw_response
scroll_size = len(results.docs)
data = results.docs
print(data)
# 获取游标
nextCursorMark = results.nextCursorMark
while (scroll_size > 0):
results = solr.search(q='*:*', sort="id asc", cursorMark=nextCursorMark)
nextCursorMark= results.nextCursorMark
data = results.docs
scroll_size = len(data)
print(data)
2.4模糊查询 (最普遍使用的模糊查询就是使用通配符)
# https://blog.csdn.net/qq_22929803/article/details/46924487
# 查询文章中含有cocktail_py的字符 似乎默认忽略大小写
results = solr.search('article:*cocktail_py*')
print(results.docs)
# # 默认term并且忽略大小写
results = solr.search(q='title:bAnana', )
2.5完全匹配查询
# https://blog.csdn.net/babydavic/article/details/8657277
# 将关键字 用 双引号 包起来
results = solr.search('article:"Cocktail_py1018"')
2.6聚合查询
# https://blog.csdn.net/vtopqx/article/details/76099078
# http://localhost:8983/solr/solr_select/query?q=*:*&facet=on&facet.field=name
params = {
"facet": "on",
"facet.field": "id",
}
results = solr.search(q="*:*", **params)
更多
https://blog.csdn.net/li295214001/article/details/46044841
https://blog.csdn.net/lyf_ldh/article/details/82733824
https://blog.csdn.net/opoppinboy/article/details/75907414
https://blog.csdn.net/sethcss/article/details/84999615
https://pypi.org/project/pysolr/
https://blog.csdn.net/u013160017/article/details/81037279