def test_search_bool_term(): concepts = [] bool_term = {} bool_term[TERM_FIELD] = TERM_VALUE search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10', semanticType=SEMTYPE) concepts.append(search_concept) date_range = wh.Range(begin=RANGE_BEGIN, end=RANGE_END) range_map = {} range_map[RANGE_FIELD] = date_range query = wh.Query(concepts=concepts, date_range=range_map, boolTerm=bool_term) documents = wh.Documents("10", "0") returns = wh.ReturnsModel(documents) response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns) search_model = wh.SearchModel._from_dict(response.get_result()) result_documents = search_model.documents for ranked_doc in result_documents: assert ranked_doc.document_id is not None assert ranked_doc.metadata is not None for key in ranked_doc.metadata: assert key is not None assert ranked_doc.metadata[key] is not None assert ranked_doc.corpus == CORPUS assert ranked_doc.links is not None doc_links = ranked_doc.links assert doc_links.href_search_matches is not None assert doc_links.href_categories is not None
def test_search_keyword(): phrase = 'COPD AND (smoker OR smoking)' operands = [] copd_operand = {} copd_operand['ontology'] = 'text' copd_operand['operandName'] = 'COPD' copd_operand['text'] = 'COPD' operands.append(copd_operand) smoker_operand = {} smoker_operand['ontology'] = 'text' smoker_operand['operandName'] = 'smoker' smoker_operand['text'] = 'smoker' operands.append(smoker_operand) smoking_operand = {} smoking_operand['ontology'] = 'text' smoking_operand['operandName'] = 'smoking' smoking_operand['text'] = 'smoking' operands.append(smoking_operand) query = wh.Query(boolExpression=phrase, concepts=operands) documents = wh.Documents("10", "0") returns = wh.ReturnsModel(documents) response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns) search_model = wh.SearchModel._from_dict(response.get_result()) result_documents = search_model.documents for ranked_doc in result_documents: assert ranked_doc.document_id is not None assert ranked_doc.metadata is not None for key in ranked_doc.metadata: assert key is not None assert ranked_doc.metadata[key] is not None assert ranked_doc.corpus == CORPUS assert ranked_doc.links is not None doc_links = ranked_doc.links assert doc_links.href_search_matches is not None assert doc_links.href_categories is not None
def test_search_multiple_concepts(): concepts = [] search_concept1 = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10', semanticType=SEMTYPE) concepts.append(search_concept1) search_concept2 = wh.SearchableConcept(cui=SECOND_CUI, ontology=ONTOLOGY, rank='10', semanticType=SECOND_SEMTYPE) concepts.append(search_concept2) query = wh.Query(concepts=concepts) documents = wh.Documents("10", "0") returns = wh.ReturnsModel(documents) response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns) search_model = wh.SearchModel._from_dict(response.get_result()) result_documents = search_model.documents for ranked_doc in result_documents: assert ranked_doc.document_id is not None assert ranked_doc.metadata is not None for key in ranked_doc.metadata: assert key is not None assert ranked_doc.metadata[key] is not None assert ranked_doc.corpus == CORPUS assert ranked_doc.links is not None doc_links = ranked_doc.links assert doc_links.href_search_matches is not None assert doc_links.href_categories is not None
def test_search_returns_passages(): concepts = [] search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10', semanticType=SEMTYPE) concepts.append(search_concept) query = wh.Query(concepts=concepts) documents = wh.Documents("10", "0") matches = [search_concept] passages = wh.Passages(concepts_to_highlight=matches, limit=3, search_tag_begin='<search_span>', search_tag_end='</search_span>', related_tag_begin='<related_span>', related_tag_end='</related_tag_end>', min_score='0.1') returns = wh.ReturnsModel(documents, passages=passages)
def test_search_sorted_results(): concepts = [] search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10', semanticType=SEMTYPE) concepts.append(search_concept) query = wh.Query(concepts=concepts) metadata = [] metadata.append("abstract") metadata.append(SORT_FIELD) sort_entries = [] order = wh.Order('ASC') sort = wh.SortEntry(SORT_FIELD, order) sort_entries.append(sort) documents = wh.Documents("10", "0", metadata, None, sort=sort_entries) returns = wh.ReturnsModel(documents)
def test_search_bool_regexp(): bool_regexp = {} bool_regexp['title'] = BOOLEAN_REGEX query = wh.Query(boolRegexp=bool_regexp) documents = wh.Documents("10", "0") returns = wh.ReturnsModel(documents) response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns) search_model = wh.SearchModel._from_dict(response.get_result()) result_documents = search_model.documents for ranked_doc in result_documents: assert ranked_doc.document_id is not None assert ranked_doc.metadata is not None for key in ranked_doc.metadata: assert key is not None assert ranked_doc.metadata[key] is not None assert ranked_doc.corpus == CORPUS assert ranked_doc.links is not None doc_links = ranked_doc.links assert doc_links.href_search_matches is not None assert doc_links.href_categories is not None
def test_search_boolean_phrase(): concepts = [] phrase = BOOL_PHRASE query = wh.Query(boolExpression=phrase, concepts=concepts) documents = wh.Documents("10", "0") returns = wh.ReturnsModel(documents) response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns) search_model = wh.SearchModel._from_dict(response.get_result()) result_documents = search_model.documents for ranked_doc in result_documents: assert ranked_doc.document_id is not None assert ranked_doc.metadata is not None for key in ranked_doc.metadata: assert key is not None assert ranked_doc.metadata[key] is not None assert ranked_doc.corpus == CORPUS assert ranked_doc.links is not None doc_links = ranked_doc.links assert doc_links.href_search_matches is not None assert doc_links.href_categories is not None
def test_search_regexp(): regexps = [] regexp = {} regexp[REGEX_FIELD] = REGEX regexps.append(regexp) query = wh.Query(regexp=regexps) documents = wh.Documents("10", "0") returns = wh.ReturnsModel(documents) response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns) search_model = wh.SearchModel._from_dict(response.get_result()) result_documents = search_model.documents for ranked_doc in result_documents: assert ranked_doc.document_id is not None assert ranked_doc.metadata is not None for key in ranked_doc.metadata: assert key is not None assert ranked_doc.metadata[key] is not None assert ranked_doc.corpus == CORPUS assert ranked_doc.links is not None doc_links = ranked_doc.links assert doc_links.href_search_matches is not None assert doc_links.href_categories is not None
def test_returns_date_histogram(): concepts = [] search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10', semanticType=SEMTYPE) concepts.append(search_concept) query = wh.Query(concepts=concepts) date_histogram = wh.DateHistograms(interval='1y') metadata = [] metadata.append("abstract") metadata.append(RANGE_FIELD) histogram_map = {} histogram_map[RANGE_FIELD] = date_histogram documents = wh.Documents(limit="10", offset="0", metadata=metadata) returns = wh.ReturnsModel(documents, None, None, None, None, None, None, None, histogram_map) response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns) search_model = wh.SearchModel._from_dict(response.get_result()) result_documents = search_model.documents for ranked_doc in result_documents: assert ranked_doc.document_id is not None assert ranked_doc.metadata is not None for key in ranked_doc.metadata: assert key is not None assert ranked_doc.metadata[key] is not None assert ranked_doc.corpus == CORPUS assert ranked_doc.links is not None doc_links = ranked_doc.links assert doc_links.href_search_matches is not None assert doc_links.href_categories is not None result_histograms = search_model.date_histograms for histogram_key in result_histograms: years_and_hits = result_histograms[histogram_key] for year in years_and_hits: year_date = wh.YearAndHits() year_and_hits = year_date._from_dict(year) assert year_and_hits.date is not None assert year_and_hits.hits > -1