========================
semlix 0.3 release notes
========================

* Major improvements to reading/writing of postings and query performance.

* Changed default post limit (run size) from 4 MB to 32 MB.

* Finished migrating backend-specific code into ``semlix.filedb`` package.

* Moved formats from semlix.fields module into new semlix.formats module.

* DocReader and TermReader classes combined into new IndexReader interface.
  You can get an IndexReader implementation by calling Index.reader().
  Searcher is now a wrapper around an IndexReader.

* Range query object changed, with new signature and new syntax in the default
  query parser. Now you can use ``[start TO end]`` in the query parser for an
  inclusive range, and ``{start TO end}`` for an exclusive range. You can also
  mix the delimiters, for example ``[start TO end}`` for a range with an
  inclusive start but exclusive end term.

* Added experimental DATETIME field type lets you pass a
  ``datetime.datetime`` object as a field value to ``add_document``::

    from semlix.fields import Schema, ID, DATETIME
    from semlix.filedb.filestore import RamStorage
    from datetime import datetime

    schema = Schema(id=ID, date=DATETIME)
    storage = RamStorage()
    ix = storage.create_index(schema)
    w = ix.writer()
    w.add_document(id=u"A", date=datetime.now())
    w.close()

  Internally, the DATETIME field indexes the datetime object as text using
  the format (4 digit year + 2 digit month + 2 digit day + 'T' + 2 digit hour +
  2 digit minute + 2 digit second + 6 digit microsecond), for example
  ``20090817T160203109000``.

* The default query parser now lets you use quoted strings in prefix and range
  queries, e.g. ``["2009-05" TO "2009-12"]``, ``"alfa/bravo"*``, making it
  easier to work with terms containing special characters.

* ``DocReader.vector_as(docnum, fieldid, astype)`` is now
  ``IndexReader.vector_as(astype, docnum, fieldid)`` (i.e. the astype argument
  has moved from the last to the first argument), e.g.
  ``v = ixreader.vector_as("frequency", 102, "content")``.

* Added semlix.support.charset for translating Sphinx charset table files.

* Added semlix.analysis.CharsetTokenizer and CharsetFilter to enable case and
  accent folding.

* Added experimental ``semlix.ramdb`` in-memory backend.

* Added experimental ``semlix.query.FuzzyTerm`` query type.

* Added ``semlix.lang.wordnet`` module containing ``Thesaurus`` object for using
  WordNet synonym database.
