使用Sunburnt创建动态大小或查询+

2024-09-29 19:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试用pythonsolr接口Sunburnt,遇到了一个我似乎无法解决的小问题。在我的搜索字段中,我想接受我放入数组中的任意数量的单词(例如,“Music‘Iron Maiden’”->;[“Music”,“Iron Maiden”]。我想出来了(用shlex)。在

问题是ORing术语的sunburt语法是

    response = si.query(si.Q(tag = 'Music') | si.Q(tag = 'Iron Maiden'))

我如何在我的搜索词列表中进行迭代,并以上面这样的结果结束呢?或者有其他我不知道的方法吗?在


Tags: gt数量tagmusic数组单词术语iron
3条回答

你真正想做的是:

query = si.query()

for word in words:
    query |= si.Q(word)

或者,作为一个单一的班轮

^{pr2}$

你能迭代数组并构造查询表达式吗?在

通常类似于

expr=""
for word in words:
    expr = expr + "si.Q(tag =" + word + ") |"

response = si.query(expr[:-1]); #to remove the dangling "|" character

我想出来了!eval()函数是关键:

words = shlex.split(request.args.get('q', ''))

qrystr=""
for word in words:
    qrystr = qrystr + "si.Q(title_s = '*" + word.replace("\0", "") + "*') | "
    # Each word needs to be stripped of null characters for the eval to work

qrystr = qrystr[:-2]; 


results = si.query(eval(qrystr))
finalresults = results.execute()    

相关问题 更多 >

    热门问题