用python突出显示solr

时间:2019-03-21 16:35:27

标签: python django solr highlight

如果我想使用 python Django 中实现 Solr 的突出显示功能,那怎么使用包来完成

solrpy 是如何处理的,因为突出显示的结果存在于 SolrResponse 对象的绝对片段中,显示为词典的字典。

此外, solrpy 仍然可以用于 solr 的更多功能,例如刻面,高亮显示和填充等功能,除了基本查询

sc = solr.SolrConnection("http://localhost:8080/solr/cases")
response_c=sc.query('name:*%s'%q+'*',fields='name,decision_date', highlight='name')

print(response_c.results)
for hit in response_c.results:
  print(hit)

为什么上面的代码无法实现“突出显示”?

2 个答案:

答案 0 :(得分:0)

是的。下面的代码允许突出显示(pysolr,版本3.6.0):

import pysolr

solr = pysolr.Solr('http://localhost:8983/solr/<core/collection>')  
results = solr.search('hello', **{
        'hl': 'true',
        'hl.fragsize': 10,
        'hl.field': 'text'
    })

for i in results:
   print(i)
print(results.highlighting)

results.highlighting字段将存储突出显示的搜索摘要。其他字段是facetsgroupedhitsspellcheckstats。在https://github.com/django-haystack/pysolr

查看更多信息

答案 1 :(得分:0)

突出显示的信息存储在响应对象上名为highlighting的单独条目中:

If you pass in `highlight` to the SolrConnection.query call,
then the response object will also have a "highlighting" property,
which will be a dictionary.

话虽如此,我强烈建议使用pysolr而不是solrpy,因为pysolr由django-haystack项目维护,并且与solrpy相比在过去几年中一直在不断开发。