簡體   English   中英

將python字典翻譯成Solr查詢字符串

[英]Translate a python dict into a Solr query string

我剛剛開始使用Python,但是我堅持將一組request.POST參數轉換為Solr的查詢語法所需的語法。

用例是這樣定義的一種形式:

class SearchForm(forms.Form):
    text = forms.CharField()
    metadata = forms.CharField()
    figures = forms.CharField()

提交后,表單需要生成一個url編碼的字符串,以傳遞給如下所示的URL客戶端:

text:myKeyword1+AND+metadata:myKeyword2+AND+figures:myKeyword3

似乎應該有一種簡單的方法來執行此操作。 我能得到的最接近的是

for f, v in request.POST.iteritems():
   if v:
       qstring += u'%s\u003A%s+and+' % (f,v)

但是,在那種情況下,冒號(\\ u003A)會產生Solr錯誤,因為它沒有得到正確的編碼。

干凈的方法是什么?

謝謝!

我建議在窗體中創建一個函數來處理此功能,而不是在視圖中創建一個功能。 因此,在調用form.isValid()以確保數據可以接受之后。 您可以調用form.generateSolrQuery()(或您想要的任何名稱)。

class SearchForm(forms.Form):
  text = forms.CharField()
  metadata = forms.CharField()
  figures = forms.CharField()

  def generateSolrQuery(self):
    return "+and+".join(["%s\u003A%s" % (f,v) for f,v in self.cleaned_data.items()])

u'\:'是否與u':'完全相同,后者在URL中以%3A轉義?

qstring = '+AND+'.join(
    [ u'%s%%3A%s'%(f,v) for f,v in request.POST.iteritems() if f]
    ) 

使用django-haystack 它負責與Solr的所有接口-索引和查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM