def search_unit(query, f, m, wl=None): """Search in fulltext.""" from invenio.legacy.search_engine import (search_unit_in_bibwords, search_pattern) from invenio.legacy.miscutil.solrutils_bibindex_searcher import ( solr_get_bitset) from invenio.legacy.miscutil.xapianutils_bibindex_searcher import ( xapian_get_bitset) from ...utils import get_idx_indexer def fix(p): if m and (m == 'a' or m == 'r'): # phrase/regexp query if p.startswith('%') and p.endswith('%'): p = p[1:-1] # fix for partial phrase p = '"' + p + '"' return p indexers = { 'SOLR': solr_get_bitset, 'XAPIAN': xapian_get_bitset, } indexer = get_idx_indexer('fulltext') if indexer in indexers and \ current_app.config.get('CFG_{}_ENABLED'.format(indexer), False): try: indexers[indexer](fix(query), f, m) except: current_app.logger.exception("Fulltext search is broken.") return intbitset() elif m == 'a' or m == 'r': # FIXME: workaround for not having phrase index yet return search_pattern(p=query, f=f, m='w') # FIXME raise ContinueSearch(query, f, m, wl) return search_unit_in_bibwords(query, f, wl=wl)
def search_unit(query, f, m, wl=None): """Search in fulltext.""" from invenio.legacy.search_engine import (search_unit_in_bibwords, search_pattern) if m == 'a' or m == 'r': # FIXME: workaround for not having phrase index yet return search_pattern(p=query, f=f, m='w') # FIXME raise ContinueSearch(query, f, m, wl) return search_unit_in_bibwords(query, f, wl=wl)
def search_unit(query, f, m, wl=None): """Search in fulltext.""" from invenio.legacy.search_engine import ( search_unit_in_bibwords, search_pattern ) if m == 'a' or m == 'r': # FIXME: workaround for not having phrase index yet return search_pattern(p=query, f=f, m='w') # FIXME raise ContinueSearch(query, f, m, wl) return search_unit_in_bibwords(query, f, wl=wl)
def search_unit(query, f, m, wl=None): """Search for records in collection query. Example: .. code-block:: text collection:"BOOK" collection:"Books" """ from invenio.legacy.search_engine import (get_collection_reclist, search_unit_in_bibwords) if len(query): ahitset = get_collection_reclist(query) if not ahitset: return search_unit_in_bibwords(query, 'collection', m, wl=wl) return ahitset else: return intbitset([])
def search_unit(query, f, m, wl=None): """Search for records in collection query. Example: .. code-block:: text collection:"BOOK" collection:"Books" """ from invenio.legacy.search_engine import ( get_collection_reclist, search_unit_in_bibwords ) if len(query): ahitset = get_collection_reclist(query) if not ahitset: return search_unit_in_bibwords(query, 'collection', m, wl=wl) return ahitset else: return intbitset([])
def search_unit(query, f, m, wl=None): """Search in fulltext.""" from invenio.legacy.search_engine import ( search_unit_in_bibwords, search_pattern ) from invenio.legacy.miscutil.solrutils_bibindex_searcher import ( solr_get_bitset ) from invenio.legacy.miscutil.xapianutils_bibindex_searcher import ( xapian_get_bitset ) from ...utils import get_idx_indexer def fix(p): if m and (m == 'a' or m == 'r'): # phrase/regexp query if p.startswith('%') and p.endswith('%'): p = p[1:-1] # fix for partial phrase p = '"' + p + '"' return p indexers = { 'SOLR': solr_get_bitset, 'XAPIAN': xapian_get_bitset, } indexer = get_idx_indexer('fulltext') if indexer in indexers and \ current_app.config.get('CFG_{}_ENABLED'.format(indexer), False): try: indexers[indexer](fix(query), f, m) except: current_app.logger.exception("Fulltext search is broken.") return intbitset() elif m == 'a' or m == 'r': # FIXME: workaround for not having phrase index yet return search_pattern(p=query, f=f, m='w') # FIXME raise ContinueSearch(query, f, m, wl) return search_unit_in_bibwords(query, f, wl=wl)