当前位置: 首页>>代码示例>>Python>>正文


Python Solr.search方法代码示例

本文整理汇总了Python中pysolr.Solr.search方法的典型用法代码示例。如果您正苦于以下问题:Python Solr.search方法的具体用法?Python Solr.search怎么用?Python Solr.search使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在pysolr.Solr的用法示例。


在下文中一共展示了Solr.search方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: search_results

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def search_results(request):
    conn = Solr(request.registry.settings['solr_base_url'], decoder=decoder)
    params = request.GET.copy()
    q = params.pop('q', None)
    if q is None:
        return HTTPFound('http://2012.haip.cc/')

    params.update({
        'facet': 'true',
        'facet.limit': 20,
        'facet.mincount': 1,
        'facet.sort': 'count',
        'facet.field': ['language', 'author_exact', 'year'],
        'fl': '*',
    })

    # TODO: get cover data, description from https://developers.google.com/books/docs/v1/reference/volumes
    # TODO: refactor logic from template to view
    # TODO: tests

    # first do request without fq so we get all facet values
    params_temp = params.copy()
    if 'fq' in params_temp:
        del params_temp['fq']
    facet_fields = conn.search(q, **params_temp).facets['facet_fields']

    # workaround due to limitation that kwargs can't handle multidict
    if 'fq' in params:
        params['fq'] = ' AND '.join(params.getall('fq'))

    log.debug(params)
    results = conn.search(q, **params)
    log.debug(results)

    allowed_networks = request.registry.settings['allowed_networks'].split(',')
    if request.client_addr in iptools.IpRangeList(*allowed_networks):
        is_trusted_ip = True
    else: 
        is_trusted_ip = False

    out = {
        'results': list(results),
        'q': q,
        'facet_fields': facet_fields,
        'facets': params.get('fq', []),
    }

    if request.matched_route.name.endswith('json'):
        return out
    else:
        out.update({
            'with_facet': with_facet,
            'without_facet': without_facet,
            'format_byte_size': format_byte_size,
            'format_facet': format_facet,
            'is_trusted_ip': is_trusted_ip,
        })
        return out
开发者ID:gandalfar,项目名称:kiberpipa.bookshelf,代码行数:60,代码来源:views.py

示例2: check_solr

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def check_solr(using='solr'):
    try:
        from pysolr import Solr, SolrError
    except ImportError:
        raise SkipTest("pysolr  not installed.")

    solr = Solr(settings.HAYSTACK_CONNECTIONS[using]['URL'])
    try:
        solr.search('*:*')
    except SolrError as e:
        raise SkipTest("solr not running on %r" % settings.HAYSTACK_CONNECTIONS[using]['URL'], e)
开发者ID:Axiacore,项目名称:django-haystack,代码行数:13,代码来源:utils.py

示例3: test_dismax_loc

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
    def test_dismax_loc(self):
        """docstring for test_dismax"""

        conn = Solr(SOLR_URL)

        loc_name = 'downing st'
        loc = TEST_LOCS[loc_name]
        print '\n\n*** %s ' % loc_name, loc
    
        kwords = 'heart'
        kw = {
            'rows': settings.SOLR_ROWS,
            'fl': '*,score',
            'qt': 'resources',
            'sfield': 'pt_location',
            'pt': loc,
            'bf': 'recip(geodist(),2,200,20)^20',
            'sort': 'score desc',
        }
    
        results = conn.search(kwords, **kw)

        print '\n--\nsearch on [%s] : ' % (kwords)
        for result in results:
            print '-', result['score'], result['title'], result.get('pt_location', '')
开发者ID:verbosity,项目名称:engineclub,代码行数:27,代码来源:tests.py

示例4: clear_missing

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
 def clear_missing(self, verbose=False):
     conn = Solr(settings.SOLR_URL)
     start = 0
     to_delete = []
     pb = None
     if verbose: print "Checking for indexed records no longer in database"
     while True:
         if verbose and pb: pb.update(start)
         result = conn.search('*:*', sort='id asc', start=start, rows=500, fields=['id'])
         if not result:
             break
         if verbose and not pb: pb = ProgressBar(result.hits)
         ids = [int(r['id']) for r in result]
         records = Record.objects.filter(id__in=ids).values_list('id', flat=True)
         for r in records:
             ids.remove(r)
         to_delete.extend(ids)
         start += 500
     if verbose and pb: pb.done()
     pb = None
     if verbose and to_delete:
         print "Removing unneeded records from index"
         pb = ProgressBar(len(to_delete))
     while to_delete:
         if verbose and pb: pb.update(pb.total - len(to_delete))
         conn.delete(q='id:(%s)' % ' '.join(map(str, to_delete[:500])))
         to_delete = to_delete[500:]
     if verbose and pb: pb.done()
开发者ID:radiata1891,项目名称:rooibos,代码行数:30,代码来源:__init__.py

示例5: test_custom_results_class

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
    def test_custom_results_class(self):
        solr = Solr('http://localhost:8983/solr/core0', results_cls=dict)

        results = solr.search(q='*:*')
        assert isinstance(results, dict)
        assert 'responseHeader' in results
        assert 'response' in results
开发者ID:alfonsoeromero,项目名称:pysolr,代码行数:9,代码来源:test_client.py

示例6: clear_solr

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def clear_solr(buid):
    """Delete all jobs for a given business unit/job source."""
    conn = Solr(settings.HAYSTACK_CONNECTIONS["default"]["URL"])
    hits = conn.search(q="*:*", rows=1, mlt="false", facet="false").hits
    logging.info("BUID:%s - SOLR - Deleting all %s jobs" % (buid, hits))
    conn.delete(q="buid:%s" % buid)
    logging.info("BUID:%s - SOLR - All jobs deleted." % buid)
开发者ID:DirectEmployers,项目名称:dseo-jobparse,代码行数:9,代码来源:import_jobs.py

示例7: handle

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
    def handle(self, port="15672", queues="solr,priority", *args, **options):
        # Determine the number of tasks still in Rabbit
        msg_count = 0
        for queue in queues.split(','):
            # Get the queue data from the rabbit Management API
            uri = "http://%(broker)s:%(port)s/api/queues/dseo-vhost/%(queue)s" % {'broker': settings.BROKER_HOST,
                                                                                  'port': port,
                                                                                  'queue': queue}
            resp = requests.get(uri, auth=(settings.BROKER_USER, settings.BROKER_PASSWORD))
            data = json.loads(resp.content)
            msg_count += data["messages_ready"]
            msg_count += data["messages_unacknowledged"]

        # If we find that having a couple long running messages can lead to false positives,
        # we can change the cutoff here.
        if msg_count <= self.msg_cutoff:
            print "No messages in the queue(s), do not raise an alert."
            return

        # Determine the number of recently updated jobs in solr.
        conn = Solr(settings.HAYSTACK_CONNECTIONS['default']['URL'])
        start_date = datetime.now() - self.look_behind
        solr_count = conn.search("date_added:[%s TO NOW]" % (start_date.iso_format() + "Z")).hits

        if solr_count <= self.solr_cutoff:
            msg = "Found %s messages in rabbit, but saw %s updated job in the last hour.  Perhaps the workers are not responding?" % (msg_count, solr_count)
            send_mail("Rabbit & Solr Monitoring",
                      msg,
                      "[email protected]",
                      "[email protected]")
开发者ID:DirectEmployers,项目名称:MyJobs,代码行数:32,代码来源:check_tasks.py

示例8: search

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def search(request):
    query = request.GET.get('q', '')
    if not query:
        return dict(query=query)
    conn = Solr(settings.SOLR_BASE)
    results = [res for res in [extract_response(r) for r in conn.search(query)]
               if res is not None]
    return dict(query=query, responses=results)
开发者ID:thraxil,项目名称:harken,代码行数:10,代码来源:views.py

示例9: loadsolr

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def loadsolr(request):
    collection_id = request.POST.get('collection_id', '')
    import_classification = request.POST.get('import_classification', '')
    solr = Solr(settings.CDRS_SOLR_URL)

    created_count = 0
    updated_count = 0

    PollenSample.objects.all().delete()

    options = {'qt': 'forest-data',
               'collection_id': collection_id,
               'rows': '1000',
               'json.nl': 'map'
               }

    try:
        set = "Pollen Types"
        results = solr.search('import_classifications:("' +
                              import_classification + '" AND "' + set + '")',
                              **options)
        created, updated = process_pollen_types(results)
        created_count += created
        updated_count += updated

        set = 'Raw Counts of 65 Pollen Types'
        results = solr.search('import_classifications:("' +
                              import_classification + '" AND "' + set + '")',
                              **options)
        created, updated = _process_samples(results, "count")
        created_count += created
        updated_count += updated

        set = 'Percentages of 15 Pollen Types'
        results = solr.search('import_classifications:("' +
                              import_classification + '" AND "' + set + '")',
                              **options)
        created, updated = _process_samples(results, "percentage")
        created_count = created_count + created
        updated_count = updated_count + updated

        cache.set('solr_created', created_count)
        cache.set('solr_updated', updated_count)
    except Exception, e:
        cache.set('solr_error', str(e))
开发者ID:coati-00,项目名称:blackrock,代码行数:47,代码来源:views.py

示例10: admin_cdrs_import

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def admin_cdrs_import(request):
    if (request.method != 'POST'):
        return render_to_response('portal/admin_cdrs.html', {})

    created = 0
    updated = 0
    solr = Solr(settings.CDRS_SOLR_URL)

    application = request.POST.get('application', '')
    collection_id = request.POST.get('collection_id', '')
    import_classification = request.POST.get('import_classification', '')
    dt = request.POST.get('last_import_date', '')
    tm = urllib.unquote(request.POST.get('last_import_time', '00:00'))

    q = 'import_classifications:"' + import_classification + '"'
    options = {'qt': 'forest-data'}

    last_import_date = LastImportDate.get_last_import_date(dt, tm, application)
    if last_import_date:
        utc = last_import_date.astimezone(FixedOffset(0))
        q += ' AND last_modified:[' + utc.strftime(
            '%Y-%m-%dT%H:%M:%SZ') + ' TO NOW]'

    try:
        collections = urllib.unquote(collection_id).split(",")
        for c in collections:
            # Get list of datasets in each collection id
            record_count = SolrUtilities().get_count_by_lastmodified(
                c, import_classification, last_import_date)
            retrieved = 0
            while (retrieved < record_count):
                to_retrieve = min(1000, record_count - retrieved)
                options['collection_id'] = c
                options['start'] = str(retrieved)
                options['rows'] = str(to_retrieve)

                results = solr.search(q, **options)
                for result in results:
                    if 'dataset_id' in result:
                        if process_metadata(result):
                            created += 1
                        else:
                            updated += 1

                retrieved = retrieved + to_retrieve

        # Update the last import date
        lid = LastImportDate.update_last_import_date(application)
        cache.set('solr_import_date', lid.strftime('%Y-%m-%d'))
        cache.set('solr_import_time', lid.strftime('%H:%M:%S'))
        cache.set('solr_created', created)
        cache.set('solr_updated', updated)
    except Exception, e:
        cache.set('solr_error', str(e))
开发者ID:coati-00,项目名称:blackrock,代码行数:56,代码来源:views.py

示例11: _solr_results_chunk

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def _solr_results_chunk(tup, buid, step):
    """
    Takes a (start_index, stop_index) tuple and gets the results in that
    range from the Solr index.

    """
    conn = Solr(settings.HAYSTACK_CONNECTIONS["default"]["URL"])
    results = conn.search(
        "*:*", fq="buid:%s" % buid, fl="uid", rows=step, start=tup[0], facet="false", mlt="false"
    ).docs
    return set([i["uid"] for i in results])
开发者ID:DirectEmployers,项目名称:dseo-jobparse,代码行数:13,代码来源:import_jobs.py

示例12: InventoryTest

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
class InventoryTest(unittest.TestCase):
    '''
        testing solr, using VM core
    '''
    @classmethod
    def setUpClass(cls):
        #TODO: all config parsing - to module level setup
        config = ConfigParser()
        config.read("config/config.ini")
        cls.solr_url = config['DEFAULT']['solr_url'] + 'vm'
        #TODO: figure why 
        logUtils.setup_logging(config)

    
    def setUp(self):

        self.solr = Solr(InventoryTest.solr_url, timeout=2)
        self.solr.delete(q='*:*')
        self.inventory = Inventory(InventoryTest.solr_url);

        super(InventoryTest, self).tearDown()
    

    def testAdd(self):
        self.assertEqual(len(self.solr.search('*:*')), 0)
        self.inventory.post(VMDATA)
        self.assertEqual(len(self.solr.search('*:*')), 2)
        self.assertEqual(len(self.solr.search(VMDATA[0]['name'])), 1)

    def testVmUpdate(self):
        self.inventory.post(VMDATA)
        self.assertEqual(len(self.solr.search('memory:513')), 0)

        vm_update_data = [{'id':VMDATA[0]['id'], 'fields':
                            [
                                {'name':'power', 'value':'off', 'command':'set'},
                                {'name':'memory', 'value':513, 'command':'set'}
                            ]
                          }];
        self.inventory.put(vm_update_data);
        self.assertEqual(len(self.solr.search('memory:513')), 1)
开发者ID:StackStorm,项目名称:search,代码行数:43,代码来源:inventory_test.py

示例13: task_check_solr_count

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def task_check_solr_count(buid, count):
    buid = int(buid)
    conn = Solr(settings.HAYSTACK_CONNECTIONS['default']['URL'])
    hits = conn.search(q="buid:%s" % buid, rows=1, mlt="false", facet="false").hits
    if int(count) != int(hits):
        logger.warn("For BUID: %s, we expected %s jobs, but have %s jobs", buid, count, hits)
        send_mail(recipient_list=["[email protected]"],
                  from_email="[email protected]",
                  subject="Buid Count for %s is incorrect." % buid,
                  message="For BUID: %s, we expected %s jobs, but have %s jobs.  Check imports for this buid." %
                        (buid, count, hits),
                  fail_silently=False)
开发者ID:wejhink,项目名称:MyJobs,代码行数:14,代码来源:tasks.py

示例14: find_by_place_or_kwords

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def find_by_place_or_kwords(name, kwords, loc_boost=None, start=0, max=None, accounts=None):
    """docstring for find_by_place_or_kwords"""
    conn = Solr(settings.SOLR_URL)
    if name:
        return find_by_place(name, kwords, loc_boost, start, max, accounts)
    # keywords only
    kw = {
        'start': start,
        'rows': minmax(0, settings.SOLR_ROWS, max, settings.SOLR_ROWS),
        'fl': '*,score',
        'qt': 'resources',
    }
    return None, conn.search(kwords.strip() or '*:*', **kw)
开发者ID:verbosity,项目名称:engineclub,代码行数:15,代码来源:models.py

示例15: search

# 需要导入模块: from pysolr import Solr [as 别名]
# 或者: from pysolr.Solr import search [as 别名]
def search(request):
    import re
    from pysolr import Solr
    from stats.models import DailySearch
    from settings import SOLR_URL
    def _fail(query):
	# phrase is not changed, query is normalized phrase
	return render_to_response('search_results.html', {
	    'result': [],
	    'query': query,
	    'phrase': query,
	}, context_instance=RequestContext(request))
    phrase = request.GET.get('phrase')
    try:
	conn = Solr(SOLR_URL)
    except:
	return _fail(phrase)
    result = []
    if not phrase:
	raise Http404("Malformed request.")
    q = phrase
    if phrase.startswith('*') or phrase.startswith('?'):
	q = phrase[1:]
    q = q.strip()
    q = re.sub('['+'\[<>@\]'+']', '', q)
    q = re.sub('`', '"', q)
    q = re.sub('\s*:',':', q)
    q = re.sub('(?<!author)(?<!title)(?<!text)(?<!file)(?<!tag)(?<!artist)(?<!album)(?<!year)(?<!company)(?<!created):', ' ', q)
    if not q:
	return _fail(phrase)
    results = conn.search(q)
    if not results:
	return _fail(q)
    ids = [i['id'] for i in results]
    result = QuerySetPaginator(Topic.objects.filter(pk__in=ids), RESULTS_ON_PAGE, orphans=5)
    if result.num_pages == 0:
	return _fail(q)
    p = DailySearch.objects.create(phrase=q.strip())
    page = request.GET.get('page', 1)
    try:
	page = int(page)
	r = result.page(page)
    except (InvalidPage, ValueError):
	raise Http404("No such page")
    return render_to_response('search_results.html', {
	'result': r,
	'query': q,
	'phrase': phrase,
	'page': int(page),
	'title': phrase,
    }, context_instance=RequestContext(request))
开发者ID:Runvik,项目名称:django-torrent-tracker,代码行数:53,代码来源:views.py


注:本文中的pysolr.Solr.search方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。