def __init__(self, entries: t.Iterable[t.Tuple[str, T]]) -> None: super().__init__() self.local_id_to_entry = {} hashes = [] for i, entry in enumerate(entries): self.local_id_to_entry[i] = entry hashes.append(entry[0]) self.index = PDQMultiHashIndex.create( hashes, custom_ids=self.local_id_to_entry.keys())
class TestPDQMultiHashIndex(MixinTests.PDQHashIndexCommonTests, unittest.TestCase): def setUp(self): self.index = PDQMultiHashIndex() self.index.add(test_hashes, range(0, len(test_hashes))) def test_create_faiss_index_from_hashes(self): assert type(self.index) is PDQMultiHashIndex hashes_as_bytes = [binascii.unhexlify(h) for h in test_hashes] assert self.index.faiss_index is not None assert self.index.faiss_index.ntotal == len(test_hashes) def test_hash_at(self): assert test_hashes[2] == self.index.hash_at(2) def test_search_index_return_ids(self): query = test_hashes[:2] results = self.index.search(query, 16, return_as_ids=True) self.assertEqualPDQHashSearchResults(results, [[0, 1], [0, 1]])
class TestPDQMultiHashIndexWithCustomIds(MixinTests.PDQHashIndexCommonTests, unittest.TestCase): custom_ids = [MAX_UNSIGNED_INT64 - i for i in range(len(test_hashes))] def setUp(self): self.index = PDQMultiHashIndex() self.index.add(test_hashes, custom_ids=self.custom_ids) def test_create_faiss_index_from_hashes(self): assert type(self.index) is PDQMultiHashIndex hashes_as_bytes = [binascii.unhexlify(h) for h in test_hashes] assert self.index.faiss_index is not None assert self.index.faiss_index.ntotal == len(test_hashes) def test_hash_at(self): assert test_hashes[2] == self.index.hash_at(self.custom_ids[2]) def test_search_index_return_ids(self): query = test_hashes[:2] results = self.index.search(query, 16, return_as_ids=True) self.assertEqualPDQHashSearchResults( results, [self.custom_ids[:2], self.custom_ids[:2]])
def _get_empty_index(cls) -> PDQHashIndex: return PDQMultiHashIndex()
def setUp(self): self.index = PDQMultiHashIndex() self.index.add(test_hashes, custom_ids=self.custom_ids)
def setUp(self): self.index = PDQMultiHashIndex() self.index.add(test_hashes, range(0, len(test_hashes)))
def setUp(self): self.index = PDQMultiHashIndex.create(test_hashes, custom_ids=self.custom_ids)
def setUp(self): self.index = PDQMultiHashIndex.create(test_hashes)