Пример #1
0
 def update_index(self, which_indexing):
     #setup new indexing
     if 'new' in which_indexing:
         indexing.update_index_properties(self)
         if config.get('enable_fulltext_search'):
             full_text_search.add_record_to_index(self)
     # setup old indexing
     if 'old' in which_indexing:
         prefix.update_prefix_properties(self)
Пример #2
0
 def update_index(self, which_indexing):
     #setup new indexing
     if 'new' in which_indexing:
         indexing.update_index_properties(self)
         if config.get('enable_fulltext_search'):
             full_text_search.add_record_to_index(self)
     # setup old indexing
     if 'old' in which_indexing:
         prefix.update_prefix_properties(self)
Пример #3
0
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)

        # Search by alternate name
        results = full_text_search.search('haiti', 'Iorin', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by family name
        results = full_text_search.search('haiti', 'Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name
        results = full_text_search.search('haiti', 'Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name + family name
        results = full_text_search.search('haiti', 'Minase Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by full name
        resutls = full_text_search.search('haiti', 'Iori Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search in a different repository
        results = full_text_search.search('japan', 'Iori', 5)
        assert not results

        # Check no results
        results = full_text_search.search('haiti', 'Producer san', 5)
        assert not results

        # Search with no query text
        results = full_text_search.search('haiti', '', 5)
        assert not results
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)

        # Search by alternate name
        results = full_text_search.search('haiti', 'Iorin', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by family name
        results = full_text_search.search('haiti', 'Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name
        results = full_text_search.search('haiti', 'Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name + family name
        results = full_text_search.search('haiti', 'Minase Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by full name
        resutls = full_text_search.search('haiti', 'Iori Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search in a different repository
        results = full_text_search.search('japan', 'Iori', 5)
        assert not results

        # Check no results
        results = full_text_search.search('haiti', 'Producer san', 5)
        assert not results

        # Search with no query text
        results = full_text_search.search('haiti', '', 5)
        assert not results
 def test_delete_record_from_index(self):
     db.put(self.p4)
     full_text_search.add_record_to_index(self.p4)
     full_text_search.delete_record_from_index(self.p4)
     results = full_text_search.search('haiti', 'Miki', 5)
     assert not results
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        db.put(self.p5)
        db.put(self.p6)
        db.put(self.p7)
        db.put(self.p8)
        db.put(self.p9)
        db.put(self.p10)
        db.put(self.p11)
        db.put(self.p12)
        db.put(self.p13)
        db.put(self.p14)
        db.put(self.p15)
        db.put(self.p16)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)
        full_text_search.add_record_to_index(self.p5)
        full_text_search.add_record_to_index(self.p6)
        full_text_search.add_record_to_index(self.p7)
        full_text_search.add_record_to_index(self.p8)
        full_text_search.add_record_to_index(self.p9)
        full_text_search.add_record_to_index(self.p10)
        full_text_search.add_record_to_index(self.p11)
        full_text_search.add_record_to_index(self.p12)
        full_text_search.add_record_to_index(self.p13)
        full_text_search.add_record_to_index(self.p14)
        full_text_search.add_record_to_index(self.p15)
        full_text_search.add_record_to_index(self.p16)


        # Search by alternate name
        results = full_text_search.search('haiti', 'Iorin', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by family name
        results = full_text_search.search('haiti', 'Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name
        results = full_text_search.search('haiti', 'Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name + family name
        results = full_text_search.search('haiti', 'Minase Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by full name
        resutls = full_text_search.search('haiti', 'Iori Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by name & location
        results = full_text_search.search('haiti', 'Chihaya Arao', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search Cyrillic record by name & location
        results = full_text_search.search('haiti', 'Ritsuko Tottori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0623'])

        # Search by home_street only
        results = full_text_search.search('haiti', 'Kunaideme72', 5)
        assert not results

        # Search by home_city only
        results = full_text_search.search('haiti', 'Arao', 5)
        assert not results

        # Search by home_state only
        results = full_text_search.search('haiti', 'Kumamoto', 5)
        assert not results

        # Search by home_postal_code only
        results = full_text_search.search('haiti', '864-0003', 5)
        assert not results

        # Search by home_neighborhood only
        results = full_text_search.search('haiti', 'Araokeibajou', 5)
        assert not results

        # Search by home_country only
        results = full_text_search.search('haiti', 'Japan', 5)
        assert not results

        # Search in a different repository
        results = full_text_search.search('japan', 'Iori', 5)
        assert not results

        # Check no results
        results = full_text_search.search('haiti', 'Producer san', 5)
        assert not results

        # Search with no query text
        results = full_text_search.search('haiti', '', 5)
        assert not results

        # Search deleted record
        delete.delete_person(self, self.p5)
        results = full_text_search.search('haiti', 'Ami', 5)
        assert not results

        # Check rank order (name match heigher than location match)
        results = full_text_search.search('haiti', 'Rin Shibuya', 5)
        assert [r.record_id for r in results] == \
               ['haiti:0810', 'haiti:0203']

        # Search romaji record by kanji name
        results = full_text_search.search('haiti', u'千早', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search romaji record by kanji name and location
        results = full_text_search.search('haiti', u'千早 荒尾', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Check rank order
        # (same kanji higher than different kanji with the same reading)

        results = full_text_search.search('haiti', u'菊地 真', 5)
        assert [r.record_id for r in results] == \
            ['haiti/0829', 'haiti/1829']
        results = full_text_search.search('haiti', u'菊地 眞', 5)
        assert [r.record_id for r in results] == \
            ['haiti/1829', 'haiti/0829']

        # Search kanji record by multi reading
        results = full_text_search.search('haiti', u'hagiwara', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1224'])
        results = full_text_search.search('haiti', u'ogiwara', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1224'])

        # Search romaji record by hiragana name and location
        results = full_text_search.search('haiti', u'ちはや あらお', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search by full name without space
        results = full_text_search.search('haiti', 'HibikiGanaha', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1010'])

        # Search kanji record by full name without space
        results = full_text_search.search('haiti', u'AzusaMiura', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0719'])

        # Search Cyrillic record by full name without space
        results = full_text_search.search('haiti', u'RitsukoAkiduki', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0623'])

        # Search full name without space record by given name and family name
        results = full_text_search.search('haiti', u'Kotori Otonashi', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0909'])

        # Search Cyrillic record by full name without space
        results = full_text_search.search('haiti', u'OtonashiKotori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0909'])

        # Search Chinese record by kanji
        results = full_text_search.search('haiti', u'真美', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0523'])
Пример #7
0
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        db.put(self.p5)
        db.put(self.p6)
        db.put(self.p7)
        db.put(self.p8)
        db.put(self.p9)
        db.put(self.p10)
        db.put(self.p11)
        db.put(self.p12)
        db.put(self.p13)
        db.put(self.p14)
        db.put(self.p15)
        db.put(self.p16)
        db.put(self.p17)
        db.put(self.p18)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)
        full_text_search.add_record_to_index(self.p5)
        full_text_search.add_record_to_index(self.p6)
        full_text_search.add_record_to_index(self.p7)
        full_text_search.add_record_to_index(self.p8)
        full_text_search.add_record_to_index(self.p9)
        full_text_search.add_record_to_index(self.p10)
        full_text_search.add_record_to_index(self.p11)
        full_text_search.add_record_to_index(self.p12)
        full_text_search.add_record_to_index(self.p13)
        full_text_search.add_record_to_index(self.p14)
        full_text_search.add_record_to_index(self.p15)
        full_text_search.add_record_to_index(self.p16)
        full_text_search.add_record_to_index(self.p17)
        full_text_search.add_record_to_index(self.p18)

        # Search by alternate name
        results = full_text_search.search('haiti', {'name': 'Iorin'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by family name
        results = full_text_search.search('haiti', {'name': 'Minase'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name
        results = full_text_search.search('haiti', {'name': 'Iori'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name + family name
        results = full_text_search.search('haiti', {'name': 'Minase Iori'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by full name
        resutls = full_text_search.search('haiti', {'name': 'Iori Minase'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by a name contains location
        results = full_text_search.search('haiti', {'name': 'Chihaya Arao'}, 5)
        assert not results

        # Search by name & location
        results = full_text_search.search('haiti', {'name':'Chihaya',
                                                    'location': 'Arao'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search Cyrillic record by name & location
        results = full_text_search.search('haiti', {'name': 'Ritsuko',
                                                    'location': 'Tottori'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0623'])

        # Search by home_street only ( input inside the name box)
        results = full_text_search.search('haiti', {'name': 'Kunaideme72'}, 5)
        assert not results

        # Search by home_city only ( input inside the location box)
        results = full_text_search.search('haiti', {'location': 'Arao'}, 5)
        assert not results

        # Search by home_state only ( input inside the location box)
        results = full_text_search.search('haiti', {'location': 'Kumamoto'}, 5)
        assert not results

        # Search by home_postal_code only ( input inside the name box)
        results = full_text_search.search('haiti', {'name': '864-0003'}, 5)
        assert not results

        # Search by home_neighborhood only ( input inside the location box)
        results = full_text_search.search(
                                    'haiti', {'location': 'Araokeibajou'}, 5)
        assert not results

        # Search by home_country only ( input inside the name box)
        results = full_text_search.search('haiti', {'name': 'Japan'}, 5)
        assert not results

        # Search in a different repository
        results = full_text_search.search('japan', {'name': 'Iori'}, 5)
        assert not results

        # Check no results
        results = full_text_search.search('haiti', {'name': 'Producer san'}, 5)
        assert not results

        # Search with no query text
        results = full_text_search.search(
                                    'haiti', {'name': '', 'location': ''}, 5)
        assert not results

        # Search deleted record
        delete.delete_person(self, self.p5)
        results = full_text_search.search('haiti', {'name': 'Ami'}, 5)
        assert not results

        # Search with empty dict
        results = full_text_search.search('haiti', {}, 5)

        # Search by full name
        results = full_text_search.search('haiti', {'name': 'Rin Shibuya'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti:0810'])

        # Search romaji record by kanji name
        results = full_text_search.search('haiti', {'name': u'千早'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search romaji record by kanji name and location
        results = full_text_search.search('haiti', {'name': u'千早',
                                                    'location': u'荒尾'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Check rank order
        # (same kanji higher than different kanji with the same reading)

        results = full_text_search.search('haiti', {'name': u'菊地 真'}, 5)
        assert [r.record_id for r in results] == \
            ['haiti/0829', 'haiti/1829']
        results = full_text_search.search('haiti', {'name': u'菊地 眞'}, 5)
        assert [r.record_id for r in results] == \
            ['haiti/1829', 'haiti/0829']

        # Search kanji record by multi reading
        results = full_text_search.search('haiti', {'name': u'hagiwara'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1224'])
        results = full_text_search.search('haiti', {'name': 'ogiwara'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1224'])

        # Search romaji record by hiragana name and location
        results = full_text_search.search('haiti', {'name': u'ちはや',
                                                    'location': u'あらお'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search by full name without space
        results = full_text_search.search('haiti', {'name': 'HibikiGanaha'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1010'])

        # Search kanji record by full name without space
        results = full_text_search.search('haiti', {'name': u'AzusaMiura'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0719'])

        # Search Cyrillic record by full name without space
        results = full_text_search.search('haiti', {'name': u'RitsukoAkiduki'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0623'])

        # Search full name without space record by given name and family name
        results = full_text_search.search('haiti', {'name': u'Kotori Otonashi'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0909'])

        # Search Cyrillic record by full name without space
        results = full_text_search.search('haiti', {'name': u'OtonashiKotori'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0909'])

        # Search Chinese record by kanji
        results = full_text_search.search('haiti', {'name': u'真美'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0523'])

        # Search Name with Location part contain a part of person's name
        results = full_text_search.search('haiti',
                                          {'name': 'Rin Shibuya',
                                           'location': 'Shinjuku Rin'}, 5)
        assert not results

        # Input the name and location in the wrong box
        results = full_text_search.search('haiti',
                                          {'name': 'Shinjuku',
                                           'location': 'Rin Shibuya'}, 5)
        assert not results

        # Search by Special Chinese Family Name
        # while records are written in English
        results = full_text_search.search('haiti', {'name': u'单鱼'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti/0911'])

        # Search by Pinyin(Chinese Romaji)
        # while records are written in Chinese
        results = full_text_search.search('haiti', {'name': u'Zeng Cheng'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti/0910'])

        # Search by Chinese
        # while records are written in Chinese
        results = full_text_search.search('haiti', {'name': u'曾诚'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti/0910'])
Пример #8
0
 def test_delete_record_from_index(self):
     db.put(self.p4)
     full_text_search.add_record_to_index(self.p4)
     full_text_search.delete_record_from_index(self.p4)
     results = full_text_search.search('haiti', 'Miki', 5)
     assert not results
Пример #9
0
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        db.put(self.p5)
        db.put(self.p6)
        db.put(self.p7)
        db.put(self.p8)
        db.put(self.p9)
        db.put(self.p10)
        db.put(self.p11)
        db.put(self.p12)
        db.put(self.p13)
        db.put(self.p14)
        db.put(self.p15)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)
        full_text_search.add_record_to_index(self.p5)
        full_text_search.add_record_to_index(self.p6)
        full_text_search.add_record_to_index(self.p7)
        full_text_search.add_record_to_index(self.p8)
        full_text_search.add_record_to_index(self.p9)
        full_text_search.add_record_to_index(self.p10)
        full_text_search.add_record_to_index(self.p11)
        full_text_search.add_record_to_index(self.p12)
        full_text_search.add_record_to_index(self.p13)
        full_text_search.add_record_to_index(self.p14)
        full_text_search.add_record_to_index(self.p15)

        # Search by alternate name
        results = full_text_search.search('haiti', 'Iorin', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by family name
        results = full_text_search.search('haiti', 'Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name
        results = full_text_search.search('haiti', 'Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name + family name
        results = full_text_search.search('haiti', 'Minase Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by full name
        resutls = full_text_search.search('haiti', 'Iori Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by name & location
        results = full_text_search.search('haiti', 'Chihaya Arao', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search Cyrillic record by name & location
        results = full_text_search.search('haiti', 'Ritsuko Tottori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0623'])

        # Search by home_street only
        results = full_text_search.search('haiti', 'Kunaideme72', 5)
        assert not results

        # Search by home_city only
        results = full_text_search.search('haiti', 'Arao', 5)
        assert not results

        # Search by home_state only
        results = full_text_search.search('haiti', 'Kumamoto', 5)
        assert not results

        # Search by home_postal_code only
        results = full_text_search.search('haiti', '864-0003', 5)
        assert not results

        # Search by home_neighborhood only
        results = full_text_search.search('haiti', 'Araokeibajou', 5)
        assert not results

        # Search by home_country only
        results = full_text_search.search('haiti', 'Japan', 5)
        assert not results

        # Search in a different repository
        results = full_text_search.search('japan', 'Iori', 5)
        assert not results

        # Check no results
        results = full_text_search.search('haiti', 'Producer san', 5)
        assert not results

        # Search with no query text
        results = full_text_search.search('haiti', '', 5)
        assert not results

        # Search deleted record
        delete.delete_person(self, self.p5)
        results = full_text_search.search('haiti', 'Ami', 5)
        assert not results

        # Check rank order (name match heigher than location match)
        results = full_text_search.search('haiti', 'Rin Shibuya', 5)
        assert [r.record_id for r in results] == \
               ['haiti:0810', 'haiti:0203']

        # Search romaji record by kanji name
        results = full_text_search.search('haiti', u'千早', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search romaji record by kanji name and location
        results = full_text_search.search('haiti', u'千早 荒尾', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Check rank order
        # (same kanji higher than different kanji with the same reading)

        results = full_text_search.search('haiti', u'菊地 真', 5)
        assert [r.record_id for r in results] == \
            ['haiti/0829', 'haiti/1829']
        results = full_text_search.search('haiti', u'菊地 眞', 5)
        assert [r.record_id for r in results] == \
            ['haiti/1829', 'haiti/0829']

        # Search kanji record by multi reading
        results = full_text_search.search('haiti', u'hagiwara', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1224'])
        results = full_text_search.search('haiti', u'ogiwara', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1224'])

        # Search romaji record by hiragana name and location
        results = full_text_search.search('haiti', u'ちはや あらお', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search by full name without space
        results = full_text_search.search('haiti', 'HibikiGanaha', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1010'])

        # Search kanji record by full name without space
        results = full_text_search.search('haiti', u'AzusaMiura', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0719'])

        # Search Cyrillic record by full name without space
        results = full_text_search.search('haiti', u'RitsukoAkiduki', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0623'])

        # Search Chinese record by kanji
        results = full_text_search.search('haiti', u'真美', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0523'])
Пример #10
0
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        db.put(self.p5)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)
        full_text_search.add_record_to_index(self.p5)

        # Search by alternate name - p1
        results = full_text_search.search('haiti', {'name': 'Iorin'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by family name -p1
        results = full_text_search.search('haiti', {'name': 'Minase'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name - p1
        results = full_text_search.search('haiti', {'name': 'Iori'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name + family name - p1
        results = full_text_search.search('haiti', {'name': 'Minase Iori'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by full name - p1
        resutls = full_text_search.search('haiti', {'name': 'Iori Minase'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by a name contains location - p4
        results = full_text_search.search('haiti', {'name': 'Chihaya Arao'}, 5)
        assert not results

        # Search by name & location - p4
        results = full_text_search.search('haiti', {
            'name': 'Chihaya',
            'location': 'Arao'
        }, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search by home_street only ( input inside the name box) - p4
        results = full_text_search.search('haiti', {'name': 'Kunaideme72'}, 5)
        assert not results

        # Search by home_city only ( input inside the location box) - p4
        results = full_text_search.search('haiti', {'location': 'Arao'}, 5)
        assert not results

        # Search by home_state only ( input inside the location box) - p4
        results = full_text_search.search('haiti', {'location': 'Kumamoto'}, 5)
        assert not results

        # Search by home_postal_code only ( input inside the name box) - p4
        results = full_text_search.search('haiti', {'name': '864-0003'}, 5)
        assert not results

        # Search by home_neighborhood only ( input inside the location box) - p4
        results = full_text_search.search('haiti',
                                          {'location': 'Araokeibajou'}, 5)
        assert not results

        # Search by home_country only ( input inside the name box) - p4
        results = full_text_search.search('haiti', {'name': 'Japan'}, 5)
        assert not results

        # Check no results
        results = full_text_search.search('haiti', {'name': 'Producer san'}, 5)
        assert not results

        # Search with no query text
        results = full_text_search.search('haiti', {
            'name': '',
            'location': ''
        }, 5)
        assert not results

        # Search deleted record - p3
        delete.delete_person(self, self.p3)
        results = full_text_search.search('haiti', {'name': 'Ami'}, 5)
        assert not results

        # Search with empty dict
        results = full_text_search.search('haiti', {}, 5)

        # Search by full name - p5
        results = full_text_search.search('haiti', {'name': 'Rin Shibuya'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti:0810'])

        # Search Name with Location part contain a part of person's name - p5
        results = full_text_search.search('haiti', {
            'name': 'Rin Shibuya',
            'location': 'Shinjuku Rin'
        }, 5)
        assert not results

        # Input the name and location in the wrong box - p5
        results = full_text_search.search('haiti', {
            'name': 'Shinjuku',
            'location': 'Rin Shibuya'
        }, 5)
        assert not results
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        db.put(self.p5)
        db.put(self.p6)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)
        full_text_search.add_record_to_index(self.p5)
        full_text_search.add_record_to_index(self.p6)

        # Search by alternate name
        results = full_text_search.search("haiti", "Iorin", 5)
        assert set([r.record_id for r in results]) == set(["haiti/0505"])

        # Search by family name
        results = full_text_search.search("haiti", "Minase", 5)
        assert set([r.record_id for r in results]) == set(["haiti/0505"])

        # Search by given name
        results = full_text_search.search("haiti", "Iori", 5)
        assert set([r.record_id for r in results]) == set(["haiti/0505"])

        # Search by given name + family name
        results = full_text_search.search("haiti", "Minase Iori", 5)
        assert set([r.record_id for r in results]) == set(["haiti/0505"])

        # Search by full name
        resutls = full_text_search.search("haiti", "Iori Minase", 5)
        assert set([r.record_id for r in results]) == set(["haiti/0505"])

        # Search by name & location
        results = full_text_search.search("haiti", "Chihaya Arao", 5)
        assert set([r.record_id for r in results]) == set(["haiti/0225"])

        # Search by home_street only
        results = full_text_search.search("haiti", "Kunaideme72", 5)
        assert not results

        # Search by home_city only
        results = full_text_search.search("haiti", "Arao", 5)
        assert not results

        # Search by home_state only
        results = full_text_search.search("haiti", "Kumamoto", 5)
        assert not results

        # Search by home_postal_code only
        results = full_text_search.search("haiti", "864-0003", 5)
        assert not results

        # Search by home_neighborhood only
        results = full_text_search.search("haiti", "Araokeibajou", 5)
        assert not results

        # Search by home_country only
        results = full_text_search.search("haiti", "Japan", 5)
        assert not results

        # Search in a different repository
        results = full_text_search.search("japan", "Iori", 5)
        assert not results

        # Check no results
        results = full_text_search.search("haiti", "Producer san", 5)
        assert not results

        # Search with no query text
        results = full_text_search.search("haiti", "", 5)
        assert not results

        # Search deleted record
        delete.delete_person(self, self.p5)
        results = full_text_search.search("haiti", "Makoto", 5)
        assert not results

        # Search romaji record by kanji name
        results = full_text_search.search("haiti", u"千早", 5)
        assert set([r.record_id for r in results]) == set(["haiti/0225"])

        # Search romaji record by kanji name and location
        results = full_text_search.search("haiti", u"千早 荒尾", 5)
        assert set([r.record_id for r in results]) == set(["haiti/0225"])
Пример #12
0
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        db.put(self.p5)
        db.put(self.p6)
        db.put(self.p7)
        db.put(self.p8)
        db.put(self.p9)
        db.put(self.p10)
        db.put(self.p11)
        db.put(self.p12)
        db.put(self.p13)
        db.put(self.p14)
        db.put(self.p15)
        db.put(self.p16)
        db.put(self.p17)
        db.put(self.p18)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)
        full_text_search.add_record_to_index(self.p5)
        full_text_search.add_record_to_index(self.p6)
        full_text_search.add_record_to_index(self.p7)
        full_text_search.add_record_to_index(self.p8)
        full_text_search.add_record_to_index(self.p9)
        full_text_search.add_record_to_index(self.p10)
        full_text_search.add_record_to_index(self.p11)
        full_text_search.add_record_to_index(self.p12)
        full_text_search.add_record_to_index(self.p13)
        full_text_search.add_record_to_index(self.p14)
        full_text_search.add_record_to_index(self.p15)
        full_text_search.add_record_to_index(self.p16)
        full_text_search.add_record_to_index(self.p17)
        full_text_search.add_record_to_index(self.p18)

        # Search by alternate name
        results = full_text_search.search('haiti', {'name': 'Iorin'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by family name
        results = full_text_search.search('haiti', {'name': 'Minase'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name
        results = full_text_search.search('haiti', {'name': 'Iori'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name + family name
        results = full_text_search.search('haiti', {'name': 'Minase Iori'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by full name
        resutls = full_text_search.search('haiti', {'name': 'Iori Minase'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by a name contains location
        results = full_text_search.search('haiti', {'name': 'Chihaya Arao'}, 5)
        assert not results

        # Search by name & location
        results = full_text_search.search('haiti', {
            'name': 'Chihaya',
            'location': 'Arao'
        }, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search Cyrillic record by name & location
        results = full_text_search.search('haiti', {
            'name': 'Ritsuko',
            'location': 'Tottori'
        }, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0623'])

        # Search by home_street only ( input inside the name box)
        results = full_text_search.search('haiti', {'name': 'Kunaideme72'}, 5)
        assert not results

        # Search by home_city only ( input inside the location box)
        results = full_text_search.search('haiti', {'location': 'Arao'}, 5)
        assert not results

        # Search by home_state only ( input inside the location box)
        results = full_text_search.search('haiti', {'location': 'Kumamoto'}, 5)
        assert not results

        # Search by home_postal_code only ( input inside the name box)
        results = full_text_search.search('haiti', {'name': '864-0003'}, 5)
        assert not results

        # Search by home_neighborhood only ( input inside the location box)
        results = full_text_search.search('haiti',
                                          {'location': 'Araokeibajou'}, 5)
        assert not results

        # Search by home_country only ( input inside the name box)
        results = full_text_search.search('haiti', {'name': 'Japan'}, 5)
        assert not results

        # Search in a different repository
        results = full_text_search.search('japan', {'name': 'Iori'}, 5)
        assert not results

        # Check no results
        results = full_text_search.search('haiti', {'name': 'Producer san'}, 5)
        assert not results

        # Search with no query text
        results = full_text_search.search('haiti', {
            'name': '',
            'location': ''
        }, 5)
        assert not results

        # Search deleted record
        delete.delete_person(self, self.p5)
        results = full_text_search.search('haiti', {'name': 'Ami'}, 5)
        assert not results

        # Search with empty dict
        results = full_text_search.search('haiti', {}, 5)

        # Search by full name
        results = full_text_search.search('haiti', {'name': 'Rin Shibuya'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti:0810'])

        # Search romaji record by kanji name
        results = full_text_search.search('haiti', {'name': u'千早'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search romaji record by kanji name and location
        results = full_text_search.search('haiti', {
            'name': u'千早',
            'location': u'荒尾'
        }, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Check rank order
        # (same kanji higher than different kanji with the same reading)

        results = full_text_search.search('haiti', {'name': u'菊地 真'}, 5)
        assert [r.record_id for r in results] == \
            ['haiti/0829', 'haiti/1829']
        results = full_text_search.search('haiti', {'name': u'菊地 眞'}, 5)
        assert [r.record_id for r in results] == \
            ['haiti/1829', 'haiti/0829']

        # Search kanji record by multi reading
        results = full_text_search.search('haiti', {'name': u'hagiwara'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1224'])
        results = full_text_search.search('haiti', {'name': 'ogiwara'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1224'])

        # Search romaji record by hiragana name and location
        results = full_text_search.search('haiti', {
            'name': u'ちはや',
            'location': u'あらお'
        }, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search by full name without space
        results = full_text_search.search('haiti', {'name': 'HibikiGanaha'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/1010'])

        # Search kanji record by full name without space
        results = full_text_search.search('haiti', {'name': u'AzusaMiura'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0719'])

        # Search Cyrillic record by full name without space
        results = full_text_search.search('haiti', {'name': u'RitsukoAkiduki'},
                                          5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0623'])

        # Search full name without space record by given name and family name
        results = full_text_search.search('haiti',
                                          {'name': u'Kotori Otonashi'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0909'])

        # Search Cyrillic record by full name without space
        results = full_text_search.search('haiti', {'name': u'OtonashiKotori'},
                                          5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0909'])

        # Search Chinese record by kanji
        results = full_text_search.search('haiti', {'name': u'真美'}, 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0523'])

        # Search Name with Location part contain a part of person's name
        results = full_text_search.search('haiti', {
            'name': 'Rin Shibuya',
            'location': 'Shinjuku Rin'
        }, 5)
        assert not results

        # Input the name and location in the wrong box
        results = full_text_search.search('haiti', {
            'name': 'Shinjuku',
            'location': 'Rin Shibuya'
        }, 5)
        assert not results

        # Search by Special Chinese Family Name
        # while records are written in English
        results = full_text_search.search('haiti', {'name': u'单鱼'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti/0911'])

        # Search by Pinyin(Chinese Romaji)
        # while records are written in Chinese
        results = full_text_search.search('haiti', {'name': u'Zeng Cheng'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti/0910'])

        # Search by Chinese
        # while records are written in Chinese
        results = full_text_search.search('haiti', {'name': u'曾诚'}, 5)
        assert set([r.record_id for r in results]) == \
               set(['haiti/0910'])
    def test_search_by_name_only(self):
        db.put(self.p1)
        db.put(self.p2)
        db.put(self.p3)
        db.put(self.p4)
        db.put(self.p5)
        db.put(self.p6)
        full_text_search.add_record_to_index(self.p1)
        full_text_search.add_record_to_index(self.p2)
        full_text_search.add_record_to_index(self.p3)
        full_text_search.add_record_to_index(self.p4)
        full_text_search.add_record_to_index(self.p5)
        full_text_search.add_record_to_index(self.p6)

        # Search by alternate name
        results = full_text_search.search('haiti', 'Iorin', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by family name
        results = full_text_search.search('haiti', 'Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name
        results = full_text_search.search('haiti', 'Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by given name + family name
        results = full_text_search.search('haiti', 'Minase Iori', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by full name
        resutls = full_text_search.search('haiti', 'Iori Minase', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0505'])

        # Search by name & location
        results = full_text_search.search('haiti', 'Chihaya Arao', 5)
        assert set([r.record_id for r in results]) == \
            set(['haiti/0225'])

        # Search by home_street only
        results = full_text_search.search('haiti', 'Kunaideme72', 5)
        assert not results

        # Search by home_city only
        results = full_text_search.search('haiti', 'Arao', 5)
        assert not results

        # Search by home_state only
        results = full_text_search.search('haiti', 'Kumamoto', 5)
        assert not results

        # Search by home_postal_code only
        results = full_text_search.search('haiti', '864-0003', 5)
        assert not results

        # Search by home_neighborhood only
        results = full_text_search.search('haiti', 'Araokeibajou', 5)
        assert not results

        # Search by home_country only
        results = full_text_search.search('haiti', 'Japan', 5)
        assert not results

        # Search in a different repository
        results = full_text_search.search('japan', 'Iori', 5)
        assert not results

        # Check no results
        results = full_text_search.search('haiti', 'Producer san', 5)
        assert not results

        # Search with no query text
        results = full_text_search.search('haiti', '', 5)
        assert not results

        # Search deleted record
        delete.delete_person(self, self.p5)
        results = full_text_search.search('haiti', 'Makoto', 5)
        assert not results