示例#1
0
 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())
示例#2
0
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]])
示例#3
0
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]])
示例#4
0
 def _get_empty_index(cls) -> PDQHashIndex:
     return PDQMultiHashIndex()
示例#5
0
 def setUp(self):
     self.index = PDQMultiHashIndex()
     self.index.add(test_hashes, custom_ids=self.custom_ids)
示例#6
0
 def setUp(self):
     self.index = PDQMultiHashIndex()
     self.index.add(test_hashes, range(0, len(test_hashes)))
示例#7
0
 def setUp(self):
     self.index = PDQMultiHashIndex.create(test_hashes,
                                           custom_ids=self.custom_ids)
示例#8
0
 def setUp(self):
     self.index = PDQMultiHashIndex.create(test_hashes)