Example #1
0
 def get(self):
     if self.repo:
         query = self.query()
         if self.params.cursor:
             query.with_cursor(self.params.cursor)
         cursor = self.params.cursor
         try:
             for person in query:
                 # query.cursor() returns a cursor which returns the entity
                 # next to this "person" as the first result.
                 next_cursor = query.cursor()
                 was_expired = person.is_expired
                 person.put_expiry_flags()
                 if (utils.get_utcnow() - person.get_effective_expiry_date()
                     > EXPIRED_TTL):
                     person.wipe_contents()
                 else:
                     # treat this as a regular deletion.
                     if person.is_expired and not was_expired:
                         delete.delete_person(self, person)
                 cursor = next_cursor
         except runtime.DeadlineExceededError:
             self.schedule_next_task(cursor)
         except datastore_errors.Timeout:
             # This exception is sometimes raised, maybe when the query
             # object live too long?
             self.schedule_next_task(cursor)
     else:
         for repo in model.Repo.list():
             self.add_task_for_repo(repo, self.task_name(), self.ACTION)
Example #2
0
 def get(self):
     if self.repo:
         query = self.query()
         if self.params.cursor:
             query.with_cursor(self.params.cursor)
         cursor = self.params.cursor
         try:
             for person in query:
                 # query.cursor() returns a cursor which returns the entity
                 # next to this "person" as the first result.
                 next_cursor = query.cursor()
                 was_expired = person.is_expired
                 person.put_expiry_flags()
                 if (utils.get_utcnow() -
                         person.get_effective_expiry_date() > EXPIRED_TTL):
                     person.wipe_contents()
                 else:
                     # treat this as a regular deletion.
                     if person.is_expired and not was_expired:
                         delete.delete_person(self, person)
                 cursor = next_cursor
         except runtime.DeadlineExceededError:
             self.schedule_next_task(cursor)
         except datastore_errors.Timeout:
             # This exception is sometimes raised, maybe when the query
             # object live too long?
             self.schedule_next_task(cursor)
     else:
         for repo in model.Repo.list():
             self.add_task_for_repo(repo, self.task_name(), self.ACTION)
Example #3
0
 def post(self, request, *args, **kwargs):
     del request, args, kwargs  # unused
     q = model.Person.all(filter_expired=False).filter(
         'repo =', self.env.repo)
     cursor = self.params.get('cursor', '')
     if cursor:
         q.with_cursor(cursor)
     try:
         now = utils.get_utcnow()
         for person in q:
             next_cursor = q.cursor()
             was_expired = person.is_expired
             person.put_expiry_flags()
             if (now - person.get_effective_expiry_date() > _EXPIRED_TTL):
                 # Only original records should get to this point, since
                 # other records should have been deleted altogether as soon
                 # as they expired. Just in case the deletion task has failed
                 # for three days though, check that it's an original record
                 # to ensure we don't change the contents of a non-original
                 # record.
                 if person.is_original():
                     person.wipe_contents()
                 else:
                     person.delete_related_entities(delete_self=True)
             elif person.is_expired and not was_expired:
                 # Since we're not sending notices, handler isn't really
                 # needed.
                 # TODO(nworden): check with Product about whether we want to
                 # send notices for expirations. The current language
                 # indicates it was designed for cases where someone manually
                 # requested deletion of the record.
                 delete.delete_person(None, person, send_notices=False)
             cursor = next_cursor
     except runtime.DeadlineExceededError:
         self.schedule_task(self.env.repo, cursor=cursor)
     except datastore_errors.Timeout:
         self.schedule_task(self.env.repo, cursor=cursor)
     return django.http.HttpResponse('')
Example #4
0
 def post(self, request, *args, **kwargs):
     del request, args, kwargs  # unused
     q = model.Person.all(filter_expired=False).filter(
         'repo =', self.env.repo)
     cursor = self.params.get('cursor', '')
     if cursor:
         q.with_cursor(cursor)
     try:
         now = utils.get_utcnow()
         for person in q:
             next_cursor = q.cursor()
             was_expired = person.is_expired
             person.put_expiry_flags()
             if (now - person.get_effective_expiry_date() > _EXPIRED_TTL):
                 # Only original records should get to this point, since
                 # other records should have been deleted altogether as soon
                 # as they expired. Just in case the deletion task has failed
                 # for three days though, check that it's an original record
                 # to ensure we don't change the contents of a non-original
                 # record.
                 if person.is_original():
                     person.wipe_contents()
                 else:
                     person.delete_related_entities(delete_self=True)
             elif person.is_expired and not was_expired:
                 # Since we're not sending notices, handler isn't really
                 # needed.
                 # TODO(nworden): check with Product about whether we want to
                 # send notices for expirations. The current language
                 # indicates it was designed for cases where someone manually
                 # requested deletion of the record.
                 delete.delete_person(None, person, send_notices=False)
             cursor = next_cursor
     except runtime.DeadlineExceededError:
         self._schedule_task(self.env.repo, cursor)
     except datastore_errors.Timeout:
         self._schedule_task(self.env.repo, cursor)
     return django.http.HttpResponse('')
Example #5
0
 def get(self):
     if self.repo:
         query = self.query()
         if self.params.cursor:
             query.with_cursor(self.params.cursor)
         for person in query:
             if quota.get_request_cpu_usage() > CPU_MEGACYCLES_PER_REQUEST:
                 # Stop before running into the hard limit on CPU time per
                 # request, to avoid aborting in the middle of an operation.
                 # Add task back in, restart at current spot:
                 self.schedule_next_task(query)
                 break
             was_expired = person.is_expired
             person.put_expiry_flags()
             if (utils.get_utcnow() - person.get_effective_expiry_date() >
                 EXPIRED_TTL):
                 person.wipe_contents()
             else:
                 # treat this as a regular deletion.
                 if person.is_expired and not was_expired:
                     delete.delete_person(self, person)
     else:
         for repo in model.Repo.list():
             self.add_task_for_repo(repo, self.task_name(), self.ACTION)
    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'])
    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'])
Example #8
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'])
Example #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)
        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"])
Example #11
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