Hi,
Currently, the solr.py Python binding casts all key and value arguments blindly to strings. The following changes deal with Unicode properly and respect multi-valued parameters passed in as lists:

131a132,142
>   def __makeField(self, lst, f, v):
>       if not isinstance(f, basestring):
>         f = str(f)
>       if not isinstance(v, basestring):
>         v = str(v)
>       lst.append('<field name="')
>       lst.append(self.escapeKey(f))
>       lst.append('">')
>       lst.append(self.escapeVal(v))
>       lst.append('</field>')
>
143,147c154,158
<       lst.append('<field name="')
<       lst.append(self.escapeKey(str(f)))
<       lst.append('">')
<       lst.append(self.escapeVal(str(v)))
<       lst.append('</field>')
---
>       if isinstance(v, list): # multi-valued
>         for value in v:
>           self.__makeField(lst, f, value)
>       else:
>         self.__makeField(lst, f, v)

James

Reply via email to