You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by Apache Wiki <wi...@apache.org> on 2009/08/19 01:07:40 UTC
[Solr Wiki] Update of "SolrpyDoc" by HossMan
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Solr Wiki" for change notification.
The following page has been changed by HossMan:
http://wiki.apache.org/solr/SolrpyDoc
The comment on the change is:
remove cut/paste content taken from other site, replace with links
------------------------------------------------------------------------------
- solrpy 0.7
+ [http://code.google.com/p/solrpy/ Solrpy] is a python client for Solr.
- A simple client to the solr search service for python.
+ * Home Page: http://code.google.com/p/solrpy/
+ * Subversion repo: http://solrpy.googlecode.com/svn/
+ * !PyPi Listing: http://pypi.python.org/pypi/solrpy/
+ * Discussion: http://groups.google.com/group/solrpy
- Features
- --------
- * Supports SOLR 1.2+
- * Supports http/https and SSL client-side certificates
- * Uses persistent HTTP connections by default
- * Properly converts to/from SOLR data types, including datetime objects
- * Supports both querying and update commands (add, delete).
- * Supports batching of commands
- * Requires Python 2.3+
- * Django-like Paginator for a solr response object
- * Test cases for the Python Solr client
-
-
- Connections
- -----------
- `SolrConnection` can be passed in the following parameters.
- Only `url` is required,.
-
- url -- URI pointing to the SOLR instance. Examples:
-
- http://localhost:8080/solr
- https://solr-server/solr
-
- Your python install must be compiled with SSL support for the
- https:// schemes to work. (Most pre-packaged pythons are.)
-
- persistent -- Keep a persistent HTTP connection open.
- Defaults to true.
-
- timeout -- Timeout, in seconds, for the server to response.
- By default, use the python default timeout (of none?)
- NOTE: This changes the python-wide timeout.
-
- ssl_key, ssl_cert -- If using client-side key files for
- SSL authentication, these should be, respectively,
- your PEM key file and certificate file
-
- Once created, a connection object has the following public methods:
-
- query (q, fields=None, highlight=None,
- score=True, sort=None, **params)
-
- q -- the query string.
-
- fields -- optional list of fields to include. It can be either
- a string in the format that SOLR expects ('id,f1,f2'), or
- a python list/tuple of field names. Defaults to returning
- all fields. ("*")
-
- score -- boolean indicating whether "score" should be included
- in the field list. Note that if you explicitly list
- "score" in your fields value, then this parameter is
- effectively ignored. Defaults to true.
-
- highlight -- indicates whether highlighting should be included.
- `highlight` can either be `False`, indicating "No" (the
- default), `True`, incidating to highlight any fields
- included in "fields", or a list of field names.
-
- sort -- list of fields to sort by.
-
- Any parameters available to SOLR 'select' calls can also be
- passed in as named parameters (e.g., fq='...', rows=20, etc).
-
- Many SOLR parameters are in a dotted notation (e.g.,
- `hl.simple.post`). For such parameters, replace the dots with
- underscores when calling this method. (e.g.,
- hl_simple_post='</pre'>)
-
- Returns a Response object
-
- add(**params)
-
- Add a document. Pass in all document fields as
- keyword parameters:
-
- add(id='foo', notes='bar')
-
- You must "commit" for the addition to be saved.
- This command honors begin_batch/end_batch.
-
- add_many(lst)
-
- Add a series of documents at once. Pass in a list of
- dictionaries, where each dictionary is a mapping of document
- fields:
-
- add_many( [ {'id': 'foo1', 'notes': 'foo'},
- {'id': 'foo2', 'notes': 'w00t'} ] )
-
- You must "commit" for the addition to be saved.
- This command honors begin_batch/end_batch.
-
- delete(id)
-
- Delete a document by id.
-
- You must "commit" for the deletion to be saved.
- This command honors begin_batch/end_batch.
-
- delete_many(lst)
-
- Delete a series of documents. Pass in a list of ids.
-
- You must "commit" for the deletion to be saved.
- This command honors begin_batch/end_batch.
-
- delete_query(query)
-
- Delete any documents returned by issuing a query.
-
- You must "commit" for the deletion to be saved.
- This command honors begin_batch/end_batch.
-
-
- commit(wait_flush=True, wait_searcher=True)
-
- Issue a commit command.
-
- This command honors begin_batch/end_batch.
-
- optimize(wait_flush=True, wait_searcher=True)
-
- Issue an optimize command.
-
- This command honors begin_batch/end_batch.
-
- begin_batch()
-
- Begin "batch" mode, in which all commands to be sent
- to the SOLR server are queued up and sent all at once.
-
- No update commands will be sent to the backend server
- until end_batch() is called. Not that "query" commands
- are not batched.
-
- begin_batch/end_batch transactions can be nested.
- The transaction will not be sent to the backend server
- until as many end_batch() calls have been made as
- begin_batch()s.
-
- Batching is completely optional. Any update commands
- issued outside of a begin_batch()/end_batch() pair will
- be immediately processed.
-
- end_batch(commit=False)
-
- End a batching pair. Any pending commands are sent
- to the backend server. If "True" is passed in to
- end_batch, a <commit> is also sent.
-
- raw_query(**params)
-
- Send a query command (unprocessed by this library) to
- the SOLR server. The resulting text is returned un-parsed.
-
- raw_query(q='id:1', wt='python', indent='on')
-
- Many SOLR parameters are in a dotted notation (e.g.,
- `hl.simple.post`). For such parameters, replace the dots with
- underscores when calling this method. (e.g.,
- hl_simple_post='</pre'>)
-
- close()
- Close the underlying HTTP(S) connection.
-
-
- Query Responses
- ---------------
-
- Calls to connection.query() return a Response object.
-
- Response objects always have the following properties:
-
- results -- A list of matching documents. Each document will be a
- dict of field values.
-
- results.start -- An integer indicating the starting # of documents
-
- results.numFound -- An integer indicating the total # of matches.
-
- results.maxScore -- An integer indicating the maximum score assigned
- to a document. Takes into account all of documents
- found by the query, not only the current batch.
-
- header -- A dict containing any responseHeaders. Usually:
-
- header['params'] -- dictionary of original parameters used to
- create this response set.
-
- header['QTime'] -- time spent on the query
-
- header['status'] -- status code.
-
- See SOLR documentation for other/typical return values.
- This may be settable at the SOLR-level in your config files.
-
-
- next_batch() -- If only a partial set of matches were returned
- (by default, 10 documents at a time), then calling
- .next_batch() will return a new Response object containing
- the next set of matching documents. Returns None if no
- more matches.
-
- This works by re-issuing the same query to the backend server,
- with a new 'start' value.
-
- previous_batch() -- Same as next_batch, but return the previous
- set of matches. Returns None if this is the first batch.
-
- Response objects also support __len__ and iteration. So, the following
- shortcuts work:
-
- responses = connection.query('q=foo')
- print len(responses)
- for document in responses:
- print document['id'], document['score']
-
-
- If you pass in `highlight` to the SolrConnection.query call,
- then the response object will also have a "highlighting" property,
- which will be a dictionary.
-
-
- Quick examples on use:
- ----------------------
-
- Example showing basic connection/transactions
-
- >>> from solr import *
-
- >>> c = SolrConnection('http://localhost:8983/solr')
-
- >>> c.add(id='500', name='python test doc', inStock=True)
-
- >>> c.delete('123')
-
- >>> c.commit()
-
-
- Examples showing the search wrapper
-
- >>> response = c.query('test', rows=20)
-
- >>> print response.results.start
- 0
- >>> for match in response:
- ... print match['id'],
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- >>> response = response.next_batch()
- >>> print response.results.start
- 20
-
- Add 3 documents and delete 1, but send all of them as a single transaction.
-
- >>> c.begin_batch()
-
- >>> c.add(id="1")
-
- >>> c.add(id="2")
-
- >>> c.add(id="3")
-
- >>> c.delete(id="0")
-
- >>> c.end_batch(True)
-
- Enter a raw query, without processing the returned HTML contents.
-
- >>> print c.raw_query(q='id:[* TO *]', wt='python', rows='10')
-
-
- SolrPaginator
- ----------------------
-
- Create a Django-like Paginator for a solr response object. Can be handy
- when you want to hand off a Paginator and/or Page to a template to
- display results, and provide links to next page, etc.
-
- For example:
- >>> from solr import SolrConnection, SolrPaginator
-
- >>>
-
- >>> conn = SolrConnection('http://localhost:8083/solr')
-
- >>> response = conn.query('title:huckleberry')
-
- >>> paginator = SolrPaginator(response)
-
- >>> print paginator.num_pages
-
- >>> page = paginator.get_page(5)
-
- For more details see the Django Paginator documentation and solrpy
- unittests.
-
- http://docs.djangoproject.com/en/dev/topics/pagination/
-
-
- source: http://code.google.com/p/solrpy/source/browse/trunk/solr/core.py
-
- source: http://code.google.com/p/solrpy/source/browse/trunk/solr/paginator.py
-