Fixed retrieval TypeError: unhashable type: 'list' (#3966)

### What problem does this PR solve?

Fixed retrieval TypeError: unhashable type: 'list'

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
Zhichang Yu 2024-12-10 18:28:56 +08:00 committed by GitHub
parent e9b8c30a38
commit 3d76f10a91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -350,8 +350,9 @@ class InfinityConnection(DocStoreConnection):
assert "_id" not in d assert "_id" not in d
assert "id" in d assert "id" in d
for k, v in d.items(): for k, v in d.items():
if k.endswith("_kwd") and isinstance(v, list): if k in ["important_kwd", "question_kwd", "entities_kwd"]:
d[k] = " ".join(v) assert isinstance(v, list)
d[k] = "###".join(v)
elif k == 'kb_id': elif k == 'kb_id':
if isinstance(d[k], list): if isinstance(d[k], list):
d[k] = d[k][0] # since d[k] is a list, but we need a str d[k] = d[k][0] # since d[k] is a list, but we need a str
@ -443,9 +444,9 @@ class InfinityConnection(DocStoreConnection):
v = res[fieldnm][i] v = res[fieldnm][i]
if isinstance(v, Series): if isinstance(v, Series):
v = list(v) v = list(v)
elif fieldnm.endswith("_kwd"): elif fieldnm in ["important_kwd", "question_kwd", "entities_kwd"]:
assert isinstance(v, str) assert isinstance(v, str)
v = v.split() v = [kwd for kwd in v.split("###") if kwd]
elif fieldnm == "position_int": elif fieldnm == "position_int":
assert isinstance(v, str) assert isinstance(v, str)
if v: if v: