예제 #1
0
def reindex(index):
    """
    Iterate over all documents we're able to find (even those that are already
    in the search index) and index them. Note that this may take a lot of time.
    """
    from xappy import errors
    from inyoka.core.resource import IResourceManager
    from inyoka.core.search import create_search_document

    index = IResourceManager.get_search_indexes()[index]

    # iterate over all search providers...
    with index.indexer_connection() as indexer:
        for provider in index.providers.itervalues():
            # ... to get all their data
            for id, obj in provider.prepare_all():
                # create a new document for the search index
                doc = create_search_document('%s-%s' % (provider.name, id),
                                             obj)
                try:
                    # try to create a new search entry
                    indexer.add(doc)
                except errors.IndexerError:
                    # there's already an exising one, replace it
                    indexer.replace(doc)
            indexer.flush()
예제 #2
0
def reindex(index):
    """
    Iterate over all documents we're able to find (even those that are already
    in the search index) and index them. Note that this may take a lot of time.
    """
    from xappy import errors
    from inyoka.core.resource import IResourceManager
    from inyoka.core.search import create_search_document

    index = IResourceManager.get_search_indexes()[index]

    # iterate over all search providers...
    with index.indexer_connection() as indexer:
        for provider in index.providers.itervalues():
            # ... to get all their data
            for id, obj in provider.prepare_all():
                # create a new document for the search index
                doc = create_search_document('%s-%s' % (provider.name, id), obj)
                try:
                    # try to create a new search entry
                    indexer.add(doc)
                except errors.IndexerError:
                    # there's already an exising one, replace it
                    indexer.replace(doc)
            indexer.flush()
예제 #3
0
def flush_indexer():
    """
    Flush all indexer connections.
    """
    logger = flush_indexer.get_logger()
    indexes = IResourceManager.get_search_indexes()
    for index in indexes.itervalues():
        with index.indexer_connection() as indexer:
            logger.debug('Flush search index: %s' % index.name)
            indexer.flush()
예제 #4
0
def flush_indexer():
    """
    Flush all indexer connections.
    """
    logger = flush_indexer.get_logger()
    indexes = IResourceManager.get_search_indexes()
    for index in indexes.itervalues():
        with index.indexer_connection() as indexer:
            logger.debug('Flush search index: %s' % index.name)
            indexer.flush()
예제 #5
0
def search(index, query, count=50):
    """
    Search for `query` in the search index `index` and print `count` results.
    """
    from inyoka.core.resource import IResourceManager

    index = IResourceManager.get_search_indexes()[index]
    with index.searcher_connection() as searcher:

        query = searcher.query_parse(query, allow=index.direct_search_allowed)
        results = searcher.search(query, 0, int(count))

        for result in results:
            print u'%d. %s' % (result.rank, result.id)
예제 #6
0
def search(index, query, count=50):
    """
    Search for `query` in the search index `index` and print `count` results.
    """
    from inyoka.core.resource import IResourceManager

    index = IResourceManager.get_search_indexes()[index]
    with index.searcher_connection() as searcher:

        query = searcher.query_parse(query, allow=index.direct_search_allowed)
        results = searcher.search(query, 0, int(count))

        for result in results:
            print u'%d. %s' % (result.rank, result.id)
예제 #7
0
def get_index_implementation(name):
    if isinstance(name, SearchIndex):
        return name
    return IResourceManager.get_search_indexes()[name]
예제 #8
0
def get_index_implementation(name):
    if isinstance(name, SearchIndex):
        return name
    return IResourceManager.get_search_indexes()[name]