Adds confidence ratings to inventaire results

Fixes bad matches in csv imports
This commit is contained in:
Mouse Reeve 2021-05-10 15:35:46 -07:00
parent 5efc7280a1
commit 07c84a6e1a

View file

@ -74,6 +74,14 @@ class Connector(AbstractConnector):
**{k: data.get(k) for k in ["uri", "image", "labels", "sitelinks"]}, **{k: data.get(k) for k in ["uri", "image", "labels", "sitelinks"]},
} }
def search(self, query, min_confidence=None):
"""overrides default search function with confidence ranking"""
results = super().search(query)
if min_confidence:
# filter the search results after the fact
return [r for r in results if r.confidence >= min_confidence]
return results
def parse_search_data(self, data): def parse_search_data(self, data):
return data.get("results") return data.get("results")
@ -84,6 +92,9 @@ class Connector(AbstractConnector):
if images if images
else None else None
) )
# a deeply messy translation of inventaire's scores
confidence = float(search_result.get("_score", 0.1))
confidence = 0.1 if confidence < 150 else 0.999
return SearchResult( return SearchResult(
title=search_result.get("label"), title=search_result.get("label"),
key=self.get_remote_id(search_result.get("uri")), key=self.get_remote_id(search_result.get("uri")),
@ -92,6 +103,7 @@ class Connector(AbstractConnector):
self.base_url, search_result.get("uri") self.base_url, search_result.get("uri")
), ),
cover=cover, cover=cover,
confidence=confidence,
connector=self, connector=self,
) )