Some fixes
This commit is contained in:
parent
7f34b0ccc4
commit
eed8eac532
@ -238,7 +238,7 @@ class SphinxClient:
|
|||||||
return
|
return
|
||||||
|
|
||||||
v = unpack('>L', sock.recv(4))
|
v = unpack('>L', sock.recv(4))
|
||||||
if v < 1:
|
if not v or v[0] < 1:
|
||||||
sock.close()
|
sock.close()
|
||||||
self._error = 'expected searchd protocol version, got %s' % v
|
self._error = 'expected searchd protocol version, got %s' % v
|
||||||
return
|
return
|
||||||
@ -252,7 +252,7 @@ class SphinxClient:
|
|||||||
INTERNAL METHOD, DO NOT CALL. Gets and checks response packet from searchd server.
|
INTERNAL METHOD, DO NOT CALL. Gets and checks response packet from searchd server.
|
||||||
"""
|
"""
|
||||||
(status, ver, length) = unpack('>2HL', sock.recv(8))
|
(status, ver, length) = unpack('>2HL', sock.recv(8))
|
||||||
response = ''
|
response = b''
|
||||||
left = length
|
left = length
|
||||||
while left > 0:
|
while left > 0:
|
||||||
chunk = sock.recv(left)
|
chunk = sock.recv(left)
|
||||||
@ -580,7 +580,7 @@ class SphinxClient:
|
|||||||
req.append(self._rankexpr)
|
req.append(self._rankexpr)
|
||||||
req.append(pack('>L', self._sort))
|
req.append(pack('>L', self._sort))
|
||||||
req.append(pack('>L', len(self._sortby)))
|
req.append(pack('>L', len(self._sortby)))
|
||||||
req.append(self._sortby)
|
req.append(self._sortby.encode())
|
||||||
|
|
||||||
if isinstance(query, str):
|
if isinstance(query, str):
|
||||||
query = query.encode()
|
query = query.encode()
|
||||||
@ -594,7 +594,7 @@ class SphinxClient:
|
|||||||
req.append(pack('>L', w))
|
req.append(pack('>L', w))
|
||||||
assert (isinstance(index, str))
|
assert (isinstance(index, str))
|
||||||
req.append(pack('>L', len(index)))
|
req.append(pack('>L', len(index)))
|
||||||
req.append(index)
|
req.append(index.encode())
|
||||||
req.append(pack('>L', 1)) # id64 range marker
|
req.append(pack('>L', 1)) # id64 range marker
|
||||||
req.append(pack('>Q', self._min_id))
|
req.append(pack('>Q', self._min_id))
|
||||||
req.append(pack('>Q', self._max_id))
|
req.append(pack('>Q', self._max_id))
|
||||||
@ -620,12 +620,12 @@ class SphinxClient:
|
|||||||
|
|
||||||
# group-by, max-matches, group-sort
|
# group-by, max-matches, group-sort
|
||||||
req.append(pack('>2L', self._groupfunc, len(self._groupby)))
|
req.append(pack('>2L', self._groupfunc, len(self._groupby)))
|
||||||
req.append(self._groupby)
|
req.append(self._groupby.encode())
|
||||||
req.append(pack('>2L', self._maxmatches, len(self._groupsort)))
|
req.append(pack('>2L', self._maxmatches, len(self._groupsort)))
|
||||||
req.append(self._groupsort)
|
req.append(self._groupsort.encode())
|
||||||
req.append(pack('>LLL', self._cutoff, self._retrycount, self._retrydelay))
|
req.append(pack('>LLL', self._cutoff, self._retrycount, self._retrydelay))
|
||||||
req.append(pack('>L', len(self._groupdistinct)))
|
req.append(pack('>L', len(self._groupdistinct)))
|
||||||
req.append(self._groupdistinct)
|
req.append(self._groupdistinct.encode())
|
||||||
|
|
||||||
# anchor point
|
# anchor point
|
||||||
if len(self._anchor) == 0:
|
if len(self._anchor) == 0:
|
||||||
@ -671,7 +671,7 @@ class SphinxClient:
|
|||||||
|
|
||||||
# select-list
|
# select-list
|
||||||
req.append(pack('>L', len(self._select)))
|
req.append(pack('>L', len(self._select)))
|
||||||
req.append(self._select)
|
req.append(self._select.encode())
|
||||||
if self._predictedtime > 0:
|
if self._predictedtime > 0:
|
||||||
req.append(pack('>L', self._predictedtime))
|
req.append(pack('>L', self._predictedtime))
|
||||||
|
|
||||||
@ -684,7 +684,7 @@ class SphinxClient:
|
|||||||
req.append(pack('>L', 0))
|
req.append(pack('>L', 0))
|
||||||
|
|
||||||
# send query, get response
|
# send query, get response
|
||||||
req = ''.join(req)
|
req = b''.join(req)
|
||||||
|
|
||||||
self._reqs.append(req)
|
self._reqs.append(req)
|
||||||
return
|
return
|
||||||
@ -702,9 +702,9 @@ class SphinxClient:
|
|||||||
if not sock:
|
if not sock:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
req = ''.join(self._reqs)
|
req = b''.join(self._reqs)
|
||||||
length = len(req) + 8
|
length = len(req) + 8
|
||||||
req = pack('>HHLLL', SEARCHD_COMMAND_SEARCH, VER_COMMAND_SEARCH, length, 0, len(self._reqs)) + req.encode()
|
req = pack('>HHLLL', SEARCHD_COMMAND_SEARCH, VER_COMMAND_SEARCH, length, 0, len(self._reqs)) + req
|
||||||
self._Send(sock, req)
|
self._Send(sock, req)
|
||||||
|
|
||||||
response = self._GetResponse(sock, VER_COMMAND_SEARCH)
|
response = self._GetResponse(sock, VER_COMMAND_SEARCH)
|
||||||
@ -749,7 +749,7 @@ class SphinxClient:
|
|||||||
nfields -= 1
|
nfields -= 1
|
||||||
length = unpack('>L', response[p:p + 4])[0]
|
length = unpack('>L', response[p:p + 4])[0]
|
||||||
p += 4
|
p += 4
|
||||||
fields.append(response[p:p + length])
|
fields.append(response[p:p + length].decode())
|
||||||
p += length
|
p += length
|
||||||
|
|
||||||
result['fields'] = fields
|
result['fields'] = fields
|
||||||
@ -760,7 +760,7 @@ class SphinxClient:
|
|||||||
nattrs -= 1
|
nattrs -= 1
|
||||||
length = unpack('>L', response[p:p + 4])[0]
|
length = unpack('>L', response[p:p + 4])[0]
|
||||||
p += 4
|
p += 4
|
||||||
attr = response[p:p + length]
|
attr = response[p:p + length].decode()
|
||||||
p += length
|
p += length
|
||||||
type_ = unpack('>L', response[p:p + 4])[0]
|
type_ = unpack('>L', response[p:p + 4])[0]
|
||||||
p += 4
|
p += 4
|
||||||
@ -797,7 +797,7 @@ class SphinxClient:
|
|||||||
p += 4
|
p += 4
|
||||||
match['attrs'][attrs[i][0]] = ''
|
match['attrs'][attrs[i][0]] = ''
|
||||||
if slen > 0:
|
if slen > 0:
|
||||||
match['attrs'][attrs[i][0]] = response[p:p + slen]
|
match['attrs'][attrs[i][0]] = response[p:p + slen].decode()
|
||||||
p += slen - 4
|
p += slen - 4
|
||||||
elif attrs[i][1] == SPH_ATTR_FACTORS:
|
elif attrs[i][1] == SPH_ATTR_FACTORS:
|
||||||
slen = unpack('>L', response[p:p + 4])[0]
|
slen = unpack('>L', response[p:p + 4])[0]
|
||||||
@ -1168,7 +1168,7 @@ class SphinxClient:
|
|||||||
self._socket = None
|
self._socket = None
|
||||||
|
|
||||||
def EscapeString(self, string):
|
def EscapeString(self, string):
|
||||||
return re.sub(r"([=\(\)|\-!@~\"&/\\\^\$\=\<])", r"\\\1", string)
|
return re.sub(r'([()|!@~"&/\\^$=<-])', r"\\\1", string)
|
||||||
|
|
||||||
def FlushAttributes(self):
|
def FlushAttributes(self):
|
||||||
sock = self._Connect()
|
sock = self._Connect()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user