def search(self, query_name, query_location=None): """Get results for a query. Args: query_name: A name to query for (string). query_location: A location to query for (optional, string). """ text_query = TextQuery( '%s %s' % (query_name, query_location) if query_location else query_name) results = None if self._external_search_backends: results = external_search.search(self._repo, text_query, self._max_results, self._external_search_backends) # External search backends are not always complete. Fall back to the # original search when they fail or return no results. if not results: query_dict = {'name': query_name} if query_location: query_dict['location'] = query_location if self._enable_fulltext_search: results = full_text_search.search(self._repo, query_dict, self._max_results) else: results = indexing.search(self._repo, text_query, self._max_results) return results
def search(self, query_txt, role=None): """Performs a search and adds view_url attributes to the results.""" results = None if self.config.external_search_backends: results = external_search.search( self.repo, TextQuery(query_txt), MAX_RESULTS, self.config.external_search_backends) # External search backends are not always complete. Fall back to the # original search when they fail or return no results. if not results: if config.get('enable_fulltext_search'): results = full_text_search.search(self.repo, query_txt, MAX_RESULTS) else: results = indexing.search(self.repo, TextQuery(query_txt), MAX_RESULTS, role=self.params.role) for result in results: result.view_url = self.get_url('/view', id=result.record_id, role=self.params.role, query=self.params.query, given_name=self.params.given_name, family_name=self.params.family_name) result.latest_note_status = get_person_status_text(result) if result.is_clone(): result.provider_name = result.get_original_domain() sanitize_urls(result) return results
def search(self, query_txt): """Performs a search and adds view_url attributes to the results.""" results = None if self.config.external_search_backends: results = external_search.search( self.repo, TextQuery(query_txt), MAX_RESULTS, self.config.external_search_backends) # External search backends are not always complete. Fall back to the # original search when they fail or return no results. if not results: if config.get('enable_fulltext_search'): results = full_text_search.search(self.repo, query_txt, MAX_RESULTS) else: results = indexing.search(self.repo, TextQuery(query_txt), MAX_RESULTS) for result in results: result.view_url = self.get_url('/view', id=result.record_id, role=self.params.role, query=self.params.query, given_name=self.params.given_name, family_name=self.params.family_name) result.latest_note_status = get_person_status_text(result) if result.is_clone(): result.provider_name = result.get_original_domain() result.should_show_inline_photo = (self.should_show_inline_photo( result.photo_url)) sanitize_urls(result) return results
def get(self): if self.config.search_auth_key_required and not ( self.auth and self.auth.search_permission): self.info(403, message='Missing or invalid authorization key', style='plain') return pfif_version = self.params.version # Retrieve parameters and do some sanity checks on them. record_id = self.request.get('id') query_string = self.request.get('q') max_results = min(self.params.max_results or 100, HARD_MAX_RESULTS) results = [] if record_id: # Search by record ID (always returns just 1 result or nothing). person = model.Person.get(self.repo, record_id) if person: results = [person] elif query_string: # Search by query words. if self.config.external_search_backends: query = TextQuery(query_string) results = external_search.search( self.repo, query, max_results, self.config.external_search_backends) # External search backends are not always complete. Fall back to # the original search when they fail or return no results. if not results: if config.get('enable_fulltext_search'): results = full_text_search.search(self.repo, query_string, max_results) else: results = indexing.search(self.repo, TextQuery(query_string), max_results) else: self.info(400, message='Neither id nor q parameter specified', style='plain') records = [pfif_version.person_to_dict(result) for result in results] utils.optionally_filter_sensitive_fields(records, self.auth) # Define the function to retrieve notes for a person. def get_notes_for_person(person): notes = model.Note.get_by_person_record_id( self.repo, person['person_record_id']) notes = [note for note in notes if not note.hidden] records = map(pfif_version.note_to_dict, notes) utils.optionally_filter_sensitive_fields(records, self.auth) return records self.response.headers[ 'Content-Type'] = 'application/xml; charset=utf-8' pfif_version.write_file(self.response.out, records, get_notes_for_person) utils.log_api_action(self, ApiActionLog.SEARCH, len(records))
def get(self): if self.config.search_auth_key_required and not ( self.auth and self.auth.search_permission): self.info( 403, message='Missing or invalid authorization key', style='plain') return pfif_version = self.params.version # Retrieve parameters and do some sanity checks on them. record_id = self.request.get('id') query_string = self.request.get('q') max_results = min(self.params.max_results or 100, HARD_MAX_RESULTS) results = [] if record_id: # Search by record ID (always returns just 1 result or nothing). person = model.Person.get(self.repo, record_id) if person: results = [person] elif query_string: # Search by query words. if self.config.external_search_backends: query = TextQuery(query_string) results = external_search.search(self.repo, query, max_results, self.config.external_search_backends) # External search backends are not always complete. Fall back to # the original search when they fail or return no results. if not results: if config.get('enable_fulltext_search'): results = full_text_search.search( self.repo, query_string, max_results) else: results = indexing.search( self.repo, TextQuery(query_string), max_results) else: self.info( 400, message='Neither id nor q parameter specified', style='plain') records = [pfif_version.person_to_dict(result) for result in results] utils.optionally_filter_sensitive_fields(records, self.auth) # Define the function to retrieve notes for a person. def get_notes_for_person(person): notes = model.Note.get_by_person_record_id( self.repo, person['person_record_id']) notes = [note for note in notes if not note.hidden] records = map(pfif_version.note_to_dict, notes) utils.optionally_filter_sensitive_fields(records, self.auth) return records self.response.headers['Content-Type'] = 'application/xml; charset=utf-8' pfif_version.write_file( self.response.out, records, get_notes_for_person) utils.log_api_action(self, ApiActionLog.SEARCH, len(records))
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 search(self, query_dict): """ Performs a search and adds view_url attributes to the results. Args: query_dict: A list contains two queries: Name query and Location query """ query_txt = " ".join(query_dict.values()) results = None if self.config.external_search_backends: results = external_search.search( self.repo, TextQuery(query_txt), MAX_RESULTS, self.config.external_search_backends) # External search backends are not always complete. Fall back to the # original search when they fail or return no results. if not results: if config.get('enable_fulltext_search'): results = full_text_search.search(self.repo, query_dict, MAX_RESULTS) else: results = indexing.search(self.repo, TextQuery(query_txt), MAX_RESULTS) query_name = self.get_query_value() for result in results: result.view_url = self.get_url('/view', id=result.record_id, role=self.params.role, query_name=query_name, query_location= self.params.query_location, given_name=self.params.given_name, family_name=self.params.family_name) result.latest_note_status = get_person_status_text(result) if result.is_clone(): result.provider_name = result.get_original_domain() result.should_show_inline_photo = ( self.should_show_inline_photo(result.photo_url)) if result.should_show_inline_photo and result.photo: # Only use a thumbnail URL if the photo was uploaded; we don't # have thumbnails for other photos. result.thumbnail_url = self.get_thumbnail_url(result.photo_url) sanitize_urls(result) return results
def search(self, query_name, query_location=None): """Get results for a query. Args: query_name: A name to query for (string). query_location: A location to query for (optional, string). """ if self._enable_fulltext_search: query_dict = {'name': query_name} if query_location: query_dict['location'] = query_location return full_text_search.search(self._repo, query_dict, self._max_results) else: text_query = TextQuery( '%s %s' % (query_name, query_location) if query_location else query_name) return indexing.search(self._repo, text_query, self._max_results)
def search(self, query_name, query_location=None): """Get results for a query. Args: query_name: A name to query for (string). query_location: A location to query for (optional, string). """ if self._enable_fulltext_search: query_dict = {'name': query_name} if query_location: query_dict['location'] = query_location return full_text_search.search( self._repo, query_dict, self._max_results) else: text_query = TextQuery( '%s %s' % (query_name, query_location) if query_location else query_name) return indexing.search( self._repo, text_query, self._max_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) 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'])
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
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'])
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"])
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) 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'])