aiosolr is a asyncio compatible fork of the pysolr lightweight Python wrapper for Apache Solr. It provides an
interface that queries the server and returns results based on the query.
- 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.
- Python 3.4 - 3.5
- aiohttp 0.21.2+
sudo python setup.py install.
Basic usage looks like:
import asyncio
import aiosolr
@asyncio.coroutine
def test(solr):
docs = [
{
"id": "doc_1",
"title": "A test document",
},
{
"id": "doc_2",
"title": "The Banana: Tasty or Dangerous?",
}
]
# How you'd index data.
yield from solr.add(docs)
# Later, searching is easy. In the simple case, just a plain Lucene-style
# query is fine.
results = yield from 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 = yield from solr.search('bananas', **{
'hl': 'true',
'hl.fragsize': 10,
})
# You can also perform More Like This searches, if your Solr is configured
# correctly.
similar = yield from solr.more_like_this(q='id:doc_2', mltfl='text')
# Finally, you can delete either individual documents...
yield from solr.delete(id='doc_1')
# ...or all documents.
yield from solr.delete(q='*:*')
if __name__ == '__main__':
loop = asyncio.get_event_loop()
# Setup a Solr instance. The timeout is optional.
solr = aiosolr.Solr('http://localhost:8983/solr/', timeout=10)
try:
loop.run_until_complete(test(solr))
finally:
solr.close()
loop.close()aiosolr is licensed under the New BSD license.
The run-tests.py script will automatically perform the steps below and is recommended for testing by
default unless you need more control.
Downloading, configuring and running Solr 4 looks like this:
./start-solr-test-server.sh
The test suite requires the unittest2 library:
python3 -m unittest tests