Skip to content

django-searchstack/skisolr

Repository files navigation

skisolr

image

target

https://travis-ci.org/django-searchstack/skisolr?branch=master

image

target

https://coveralls.io/github/django-searchstack/skisolr?branch=master

skisolr is a lightweight Python wrapper for Apache Solr. It provides an
interface that queries the server and returns results based on the query. It's a fork of pysolr and
is mainly intended to serve as internal dependency for Django-Searchstack. Therefore, not much

guarantees are provided regarding API stability at the moment.

Features
  • Basic operations such as selecting, updating & deleting.
  • Index optimization.
  • "More Like This" support (if set up in Solr).
  • Spelling correction (if set up in Solr).
  • Timeout support.
  • Core administration.

Requirements

  • Python 2.7 - 3.5
  • Requests 2.0+

Installation

sudo python setup.py install or drop the skisolr.py file anywhere on your PYTHONPATH.

Usage

Basic usage looks like:

from __future__ import print_function  # If on Python 2.X
from skisolr import Solr

# Setup a Solr instance. The timeout is optional.
solr = Solr('http://localhost:8983/solr/', timeout=10)

# How you'd index data.
solr.add([
    {
        "id": "doc_1",
        "title": "A test document",
    },
    {
        "id": "doc_2",
        "title": "The Banana: Tasty or Dangerous?",
    },
])

# Later, searching is easy. In the simple case, just a plain Lucene-style
# query is fine.
results = solr.search('bananas')

# The ``Results`` object stores total results found, by default the top
# ten most relevant results and any additional data like
# facets/highlighting/spelling/etc.
print("Saw {0} result(s).".format(len(results)))

# Just loop over it to access the results.
for result in results:
    print("The title is '{0}'.".format(result['title']))

# For a more advanced query, say involving highlighting, you can pass
# additional options to Solr.
results = solr.search('bananas', **{
    'hl': 'true',
    'hl.fragsize': 10,
})

# You can also perform More Like This searches, if your Solr is configured
# correctly.
similar = solr.more_like_this(q='id:doc_2', mltfl='text')

# Finally, you can delete either individual documents...
solr.delete(id='doc_1')

# ...or all documents.
solr.delete(q='*:*')

LICENSE

skisolr is licensed under the New BSD license.

Running Tests

Running a test Solr instance

Downloading, configuring and running Solr 4 looks like this:

tests/start-solr-test-server.sh

Running the tests

The test suite requires the nose library:

python setup.py nosetests

About

Replacement of pysolr for django-searchstack

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published