[英]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.