使用Solr 6,Python 3和pysolr突出显示每个匹配项

时间:2016-06-15 18:04:00

标签: python solr highlight pysolr

我有这个Solr索引包含很长的文本文件,用text_sv模式索引。我想为每个索引文档打印每个单个代码段。但是,我只检索了一些,即使我已尝试按照documentation中的规定设置各种设置。

以下是代码部分:

results = solr.search(search_string, rows = result_limit, sort = order,
            **{
                'hl':'true',
                'hl.fragsize': 100,
                'hl.fl': 'fulltext',
                'hl.maxAnalyzedChars': -1,
                'hl.snippets': 100,
                })
resultcounter = 0
for result in results:
    resultcounter += 1
    fulltexturl = '<a href="http://localhost/source/\
    ' + result['filename'] + '">' + result['filename'][:-4] + '</a>'
    year = str(result['year'])
    number = str(result['number'])
    highlights = results.highlighting
    print("Saw {0} result(s).".format(len(results)))
    print('<p>' + str(resultcounter) + '. <b>År:</b> ' + year + ', <b>Nummer\
            : </b>' + number +' ,<b>Fulltext:</b> ' + fulltexturl + '. <b>\
            </b> träffar.<br></p>')
    inSOUresults = 1
    for idnumber, h in highlights.items():
        for key, value in h.items():
            for v in value:
                print('<p>' + str(inSOUresults) + ". " +  v + "</p>")
                inSOUresults += 1

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可能希望hl.fragments参数的值非常大(或0)(来自the Highlighting wiki page):

  

使用原始荧光笔,如果您有一个用例需要突出显示字段的完整文本并需要突出显示搜索字词的每个实例,您可以将hl.fragsize设置为非常高的值(无论如何包含该字段最大值的所有文本),例如&amp; hl.fragsize = 50000。

     

但是,如果要将fragsize更改为大于51200的值以使用突出显示返回长文档文本,则还需要将相同的值传递给hl.maxAnalyzedChars参数。这两个参数齐头并进,只更改hl.fragsize不足以在非常大的字段中突出显示。