Tue Apr 29 08:25:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* MANIFEST.in,setup.py: Update setup.py and MANIFEST ready for 0.5
	  release.

Tue Apr 29 07:58:10 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py,utils/make_xappy_tarballs: Update scripts to
	  get custom version of xapian to latest version.

Mon Apr 28 23:25:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/: Add check that xapian is at at least version 1.0.6; raise
	  ImportError at import time if version is too old.  Add checks for
	  a version of xapian with sufficient features to support tags and
	  facets, and disable those features if they're not present: an
	  exception will be raised when tag or facet features are used if
	  the xapian version is too old.

Fri Apr 25 12:23:09 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/runtests.py: Copy fixes from xapian_1.0 branch to make
	  the testsuite pass on windows.

Thu Apr 17 23:07:35 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/unittests/freetext_1.py: New unit test for the
	  search_by_default and allow_field_specific fields.

Thu Apr 17 22:04:34 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst,xappy/fieldactions.py,
	  xappy/searchconnection.py: Add allow_field_specific and
	  search_by_default flags to INDEX_FREETEXT action.

Sat Mar 29 16:59:23 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Fix some "foo if bar" constructions
	  which broken python2.4.  Should now work with python 2.4 again.

Wed Mar 26 08:14:27 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/fieldactions.py: Tidy up the imports in this file, too.

Wed Mar 26 07:52:47 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/__init__.py,xappy/datastructures.py,
	  xappy/indexerconnection.py: Remove several "import *" lines from
	  __init__.py, replacing them by importing the specific symbols
	  desired.  Remove the nasty renaming of imported symbols in the
	  files thus imported, since this was to work around polluting the
	  namespace when "import *" was used.

Tue Mar 25 12:46:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/unittests/facet_query_type_1.py,xappy/indexerconnection.py,
	  xappy/searchconnection.py: More facet selection improvements from
	  Tom Winch: allow a set of associations between query types and
	  facets to be stored in the database configuration, and use these
	  facets to either prevent or prefer certain facets from being
	  chosen for a particular query type.  (Query types are specified
	  by an additional parameter to the search() method.)

Wed Mar 19 01:42:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/indexerconnection.py,xappy/searchconnection.py: Remove
	  backwards compatibility support for reading fieldactions from a
	  file.  It just makes the code more complex, and xappy really
	  needs to use a more recent version of xapian.

Tue Mar 18 21:34:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS: Add Tom Winch.

Tue Mar 18 21:29:25 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/unittests/facet_hierarchy_1.py,xappy/indexerconnection.py,
	  xappy/searchconnection.py: Add support for defining a facet
	  heirarchy, for use when selecting facets.  Not yet used, but is
	  stored in the database configuration, and available to both the
	  indexer connection and the search connection.

Mon Mar 17 16:46:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Fix setting of stemmer so that it
	  still works with replaylog enabled.

Thu Feb 21 13:12:03 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py: Update to new tarballs which actually work,
	  this time.

Thu Feb 21 01:54:18 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py: Revert to earlier tarballs - the new ones
	  don't work.

Thu Feb 21 01:50:17 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py: Update with new tarballs.

Thu Feb 21 01:23:46 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* utils/make_xappy_tarballs: Update the branchpoint version
	  numbers.

Tue Feb 05 09:59:50 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py: Upgrade version of xapian used to one which
	  contains database replication functionality.

Tue Feb 05 09:45:27 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/indexerconnection.py,xappy/searchconnection.py,
	  xappy/searchconnection_doctest3.txt: Add interface to
	  IndexerConnection for setting and getting metadata, and interface
	  to SearchConnection for getting metadata.

Mon Feb 04 00:58:05 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Cope with a facet being declared as
	  SORTABLE, but without a type, but of facet type float. (Treat the
	  facet search as a numeric range, correctly - used to fail to
	  serialise the numbers correctly.)
	* xappy/searchconnection_doctest2.txt: Add regression test.

Sat Feb 02 17:59:24 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/indexerconnection.py: Add simple work-around for synonyms -
	  allow a field to be specified for the original word separately
	  from the synonym.  Needs tidying up, but allows slightly more
	  flexibility in synonyms.
	* xappy/searchconnection_doctest2.txt: Adjust test accordingly.

Sat Feb 02 13:14:29 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/indexerconnection.py,xappy/searchconnection.py: Backwards
	  compatibility fix for reading the metadata: if the config isn't
	  in the metadata key, or metadata isn't supported by the version
	  of xapian in use, read it from the file.  When writing the
	  config, if it can't be stored in the metadata, store it in a
	  file.  A database can now be upgraded to use the new metadata
	  method simply by opening an indexerconnection on it, and then
	  closing it.

Sat Feb 02 12:47:33 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* utils/make_xappy_tarballs: Tidy up tarball making script.

Sat Feb 02 12:44:59 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add faster implementation of expand
	  decider, using a regexp for the prefixes.
	* xappy/searchconnection_doctest2.txt: Test it.

Mon Jan 28 15:13:04 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* xappy/indexerconnection.py,xappy/searchconnection.py: Change the
	  storage of the settings from a file in the database directory to
	  be in a metadata.  This change allow the forthcoming replication
	  support to copy databases without losing their settings, and
	  should also be helpful when we implement remote database support.

Wed Jan 23 22:27:50 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py: Even newer xapian tarball - containing more
	  fixes from charlie for windows.

Wed Jan 23 16:04:12 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py,utils/make_xappy_tarballs: Update xapian
	  tarballs - mainly to get fixes for the build system on windows.

Thu Jan 10 00:28:26 UTC 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py: Update to get latest archives.

Thu Jan 10 00:04:51 UTC 2008  Richard Boulton <richard@lemurconsulting.com>

	* utils/make_xappy_tarballs: Update with new branchpoint.

Wed Jan 09 22:50:36 UTC 2008  Richard Boulton <richard@lemurconsulting.com>

	* utils/make_xappy_tarballs: Update with version numbers for latest
	  branches.
	* libs/get_xapian.py: Update with details of latest tarballs, which
	  include OP_VALUE_GE and OP_VALUE_LE.
	* xappy/searchconnection.py: Allow None to be specified as the
	  begin or end or a range query - allows half ranges to be
	  specified.
	* xappy/searchconnection_doctest2.txt: Test passing None as the end
	  parameters of a range query.

Wed Jan 09 22:46:31 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* utils/make_xappy_tarballs: Update with version numbers for latest
	  branches.
	* libs/get_xapian.py: Update with details of latest tarballs, which
	  include OP_VALUE_GE and OP_VALUE_LE.
	* xappy/searchconnection.py: Allow None to be specified as the
	  begin or end or a range query - allows half ranges to be
	  specified.
	* xappy/searchconnection_doctest2.txt: Test passing None as the
	  end parameters of a range query.

Mon Jan 07 19:47:36 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* libs/get_xapian.py: New script (taken from flax) to download the
	  xapian tarballs and unpack them, ready to be built.
	* libs/*.tgz: Remove the tarballs from svn - they were too big to
	  be kept here.  They're now hosted on the googlecode download
	  area, which should be as reliable as the googlecode svn server.
	* utils/make_xappy_tarballs: Update with new version numbers.

Mon Jan 07 16:59:22 GMT 2008  Richard Boulton <richard@lemurconsulting.com>

	* utils/make_xappy_tarballs: Update version numbers for latest
	  branch updates, to build new tarballs.

Mon Dec 31 13:09:33 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py,xappy/searchconnection_doctest1.txt:
	  Test opening of a database which doesn't exist, and set _index to
	  None in class initialiser to avoid assertion error when calling
	  close() from __del__() in this situation.

Mon Dec 17 09:28:01 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add _cluster method, and
	  _reorder_by_clusters() method.

Mon Dec 10 19:46:25 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* utils/make_xappy_tarballs: Update to apply the changes in the
	  clustering branch.

Mon Dec 10 19:45:30 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add ability to restrict the reordering
	  to just use specific fields, and to use approximations for the
	  termfreqs to speed it up.

Mon Dec 10 17:19:34 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Remove accidentally committed
	  debugging prints.

Mon Dec 10 17:18:34 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add (experimental)
	  _reorder_by_similarity() method to SearchResults.

Thu Dec 06 16:53:23 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add a "userdata" parameter to the
	  closehandler callback, to make writing the callbacks easier.
	* xappy/searchconnection_doctest2.txt: Test the userdata parameter.

Thu Dec 06 12:27:53 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/highlight_doctest1.txt: Don't display the output of the
	  highlighter - we're just testing that it returns promptly.

Thu Dec 06 12:19:55 UTC 2007  Tom Mortimer <tom@lemurconsulting.com>

	* xappy/highlight.py,xappy/highlight_doctest1.txt: Simplified
	  regexp to work around freezing problem. Less procise now but
	  probably good enough temporarily. Fixed test case.

Thu Dec 06 07:38:49 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/highlight_doctest1.txt: Add testcase of a pathological
	  document for highlighting - the regular expression currently
	  takes a ridiculously long time to process this.

Thu Dec 06 07:29:28 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/runtests.py: Fix for running with debug logging.

Wed Dec 05 15:57:41 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Improve a documentation comment.

Mon Dec 03 18:01:51 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py,xappy/searchconnection_doctest2.txt:
	  Add ability to set a callback on SearchConnection to be called
	  when the object is closed (even if this is an implicit close due
	  to being deleted).

Thu Nov 29 17:58:18 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Expose an API for setting the minimum
	  weight or percentage allowed for a result to be returned; this is
	  done by supplying the percentcutoff or weightcutoff parameters to
	  SearchConnection.search()
	* xappy/searchconnection_doctest2.txt: Test the weight and
	  percentage cutoff parameters.

Wed Nov 28 10:18:43 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Fix returning of empty facet value,
	  which translates into numeric range from -inf to -inf: this is
	  returned when some documents do not have an entry in a numeric
	  range, with a count of the number of documents which matched but
	  didn't have a numeric facet.  Just ignore this information.

Wed Nov 28 08:37:08 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Remove a typo.

Wed Nov 28 08:15:09 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst,xappy/indexerconnection_doctest2.txt,
	  xappy/searchconnection.py,xappy/searchconnection_doctest2.txt:
	  Modify query parsing to ensure that exact matches are given a
	  higher weight than stemmed or synonym matches.  Update testcases
	  accordingly.

Wed Nov 28 07:34:21 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* libs/: Update the xapian tarballs; these now include OP_SYNONYM
	  and use it for synonym searches, wildcards, and partial searches.

Tue Nov 27 22:39:54 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* utils/make_xappy_tarballs: Add script to update the xappy
	  tarballs from xapian SVN.

Mon Nov 26 14:51:24 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/runtests.py: Call close methods on anything from xappy
	  which has one when cleaning up.

Mon Nov 26 14:11:46 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/indexerconnection_doctest1.txt: Windows doesn't give a
	  detail for why a DatabaseLockError can't be obtained, so make the
	  test case more flexible there.

Mon Nov 26 12:36:38 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/runtests.py: Delete entries in the dictionary before
	  calling teardown; should help avoid trying to delete open files
	  on windows.

Sun Nov 18 15:45:26 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/replaylog.py: New file - allows all calls to xapian to be
	  logged, such that they could be replayed later for debugging.
	  Has rather an unpleasant implementation, but as a result has
	  minimal impact when not turned on - I've not been able to measure
	  any performance impact incurred when not logging.
	* xappy/__init__.py: Expose new function "set_replay_path" used to
	  start logging.
	* xappy/marshall.py, xappy/fieldactions.py,
	  xappy/datastructures.py, xappy/indexerconnection.py,
	  xappy/searchconnection.py: Hook into the replay logging.

Sun Nov 18 15:44:50 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/runtests.py: Run without profiling by default - much
	  faster.

Thu Nov 15 08:38:18 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/runtests.py: Allow coverage and profiling measures to
	  be turned on and off easily (not yet with command line options,
	  but now only needs a simple edit to the code).

Wed Nov 07 17:45:48 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add extra "query" parameter to
	  summarise() and highlight() methods, which can be used to
	  override the query used as the basis of the highlighting.

Wed Nov 07 17:30:02 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/highlight.py: Fix tests to correspond to recent change.
	* xappy/searchconnection.py: Add "query_none()" to get an empty
	  query explicitly.  Can be useful as a placeholder.

Tue Nov 06 13:54:13 UTC 2007  Tom Mortimer <tom@lemurconsulting.com>

	* xappy/highlight.py: Highlighter works with stemmed and unstemmed
	  terms. Workaround until we have proper phrase highlighting

Thu Nov 01 14:43:34 UTC 2007  Richard Boulton <richard@lemurconsulting.com>

	* libs/win32msvc.tgz: Updated build files for windows.

Wed Oct 31 19:01:03 UTC 2007  Richard Boulton <richard@lemurconsulting.com>

	* libs/xapian-bindings-xappy.tgz: Version with a concurrency
	  problem fixed.

Wed Oct 31 17:57:00 UTC 2007  Richard Boulton <richard@lemurconsulting.com>

	* libs/matchspy.cc: Version of matchspy.cc with quick workaround to
	  avoid segfault.

Tue Oct 30 11:12:28 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Document the members of SearchResult.

Tue Oct 30 11:02:22 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add weight and percent members to
	  SearchResult objects.

Mon Oct 29 21:21:27 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* README: Update to tell users to use the tarballs from the libs/
	  subdirectory.

Mon Oct 29 21:19:01 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py,xappy/searchconnection_doctest2.txt:
	  Fix setting of the prefix to use the correct form of add_prefix,
	  and fix the expected output of scale weight queries to use the
	  new style of output.

Mon Oct 29 20:19:27 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* libs/win32msvc.tgz,libs/xapian-bindings-xappy.tgz,
	  libs/xapian-core-xappy.tgz: Add tarballs containing a suitable
	  version of xapian to use with xappy.

Mon Oct 29 15:07:00 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/indexerconnection.py: Turn off the max_mem_use setting by
	  default, so we don't mess up performance of existing applications.

Mon Oct 29 14:59:26 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/indexerconnection.py: Increase estimate of amount of memory
	  used, based on profiling observations.

Mon Oct 29 14:14:04 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/unittests/spell_correct_1.py: Add unittest
	  demonstrating problem with spelling correction.

Mon Oct 29 14:08:59 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/memutils.py: New file, which gets the total amount of
	  physical memory on the system (for windows and POSIX).
	* xappy/indexerconnection.py: Add set_max_mem_use(), which causes
	  an automatic flush if more than a certain (configurable) amount
	  of memory is used.  This should help to avoid using all the
	  memory for buffered changes, resulting in swapping.  The estimate
	  of the memory used is fairly primitive, though, so could do with
	  improvment.

Mon Oct 29 09:30:21 GMT 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Retry parse_query() attempt without
	  support for boolean operators if it fails in spell correct
	  routine, to match behaviour of query_parse() routine.

Fri Oct 12 09:52:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: If allow, deny, default_deny or
	  default_allow are passed as empty lists, behave as if they were
	  passed as None.

Wed Oct 10 22:56:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Update some documentation comments.

Wed Oct 10 18:21:33 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add the default_op, default_allow, and
	  default_deny optional parameters to spell_correct(), so that it
	  takes the same arguments as query_parse().

Wed Oct 10 01:25:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/perftest.py: Remove facet and tags test runs - we don't
	  have the data needed to make them run, anyway.

Wed Oct 10 01:22:20 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/perftest.py,perftest/searcher.py: Add use_or option to
	  search runs, and do an "OR" run by default.

Tue Oct 09 16:03:42 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Expand documentation comment to
	  explain the distinction between default_{allow,deny} and
	  {allow,deny}.

Tue Oct 09 15:36:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/perftest.py: Add "--usedb" parameter - if supplied, a
	  ready made DB is assumed to be at that path, and no index run
	  will be done.

Tue Oct 09 15:10:00 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/perftest.py: If pylab isn't available, don't call the
	  analyse_* functions (and don't produce pretty graphs, as a
	  result).

Tue Oct 09 14:55:53 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* README,docs/introduction.rst: Update comments about the version
	  of Xapian which is required.

Tue Oct 09 02:14:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/running_perftest.txt: More instructions.

Tue Oct 09 02:05:03 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/running_perftest.txt: Add some notes on running the
	  performance tests, with wikipedia data.

Tue Oct 09 01:48:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/perftest.py: More tidying, ready for running big tests
	  against wikipedia.

Tue Oct 09 01:32:43 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/searcher.py: Tidy up headings.

Tue Oct 09 01:21:38 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/: Sort out search side of performance tests.

Mon Oct 08 23:46:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/: Tidy up, towards making automated performance tests
	  runnable just by running a single script.  Fix graph drawing for
	  cases where there are few sample points.

Mon Oct 08 14:22:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS: Add second name for Bruno Rezende.

Sun Oct 07 01:56:47 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Change from using OP_MULT_WEIGHT to
	  use OP_SCALE_WEIGHT, to work with latest version of xapian.

Sat Oct 06 01:55:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* MANIFEST.in,eggsetup.py,setup.py: Basic start of distutils
	  packaging.

Wed Oct 03 14:00:17 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* build.py: Don't include private variables in the output of epydoc;
	  this makes it more useful as an API reference.
	* docs/introduction.rst: Add a note on error handling.

Wed Oct 03 13:04:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/errors.py,xappy/errors_doctest1.txt: Export all the xapian
	  error types (eg, xapian.FooError) as xappy.XapianFooError.  Also,
	  make them all subclasses of xappy.XapianError.  This allow
	  a particular Xapian error to be caught using "except
	  xappy.XapianFooError", or all Xapian errors to be caught using
	  "except xappy.XapianError".

Wed Oct 03 12:36:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/highlight.py,xappy/searchconnection_doctest3.txt: Fix from
	  Alex Bowley to coerce maxlen into an int in highlight.py

Tue Oct 02 18:31:54 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Minor correction to a documentation
	  comment.

Tue Oct 02 18:03:31 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add query_adjust(), allowing the
	  weights of one query to be adjusted based on the results of a
	  second query.
	* xappy/searchconnection_doctest2.txt: Add test for query_adjust()

Mon Oct 01 15:23:11 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add a __len__() method for
	  SearchResults().
	* xappy/searchconnection_doctest1.txt,
	  xappy/searchconnection_doctest2.txt: Test it

Mon Oct 01 14:23:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add SearchConnection.query_multweight,
	  which produces a query from a subquery by multiplying the weights
	  by a multiplier.
	* xappy/indexerconnection_doctest2.txt: Modify test of "Cannot
	  specify both `allow` and `deny`" to expect new extended message.
	* xappy/searchconnection_doctest2.txt: Add test of a multweight
	  query.

Sun Sep 30 10:37:21 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py,xappy/searchconnection_doctest2.txt:
	  Add "required_facets" parameter to get_suggested_facets(),
	  allowing certain facets to be required in the list of returned
	  facets.

Fri Sep 28 16:12:35 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* testsuite/coverage.py: Update copy of coverage.py to latest
	  version (with patches applied) to get correct results with
	  python2.5

Mon Sep 24 14:21:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py,xappy/searchconnection_doctest2.txt:
	  Add default_allow and default_deny parameters to query_parse.
	  These allow a list of field names to be specified which will be
	  searched by default (instead of searching all free-text fields).
	  Needs latest SVN version of xapian.

Sat Sep 22 09:21:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/searchconnection.py: Add 'rb' to another call to open that
	  I missed.

Thu Sep 20 15:20:41 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS: Start list of individuals who have contributed in any
	  way.

Tue Sep 18 13:23:15 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* xappy/datastructures.py,xappy/indexerconnection_doctest1.txt:
	  Document, and test, that it's okay to use an iterator for
	  UnprocessedDocument.fields.

Tue Sep 18 13:05:53 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Clarify some of the documentation about
	  facets.

Fri Sep 07 16:51:33 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* ChangeLog: Tidy-up whitespace.

Wed Sep 05 15:33:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* examples/fileindex.py,examples/search.py,perftest/index_from_dump.py,
	  perftest/search_speed.py: Change all remaining references to
	  "secore" name, except in the compatibility wrapper and the tests
	  for that, to "xappy".

Wed Sep 05 15:29:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Change references to secore to references
	  to xappy.
	* xappy/fieldmappings_doctest1.txt: Add test which I wrote ages
	  ago, but had forgotten to commit.

Wed Sep 05 15:05:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/,testsuite/runtests.py: Add compatibility layer so that
	  old scripts can run without needing to change from "secore" to
	  "xappy", for now.  Change testsuite to run using new names (but
	  use the old ones too, to test the compatibility layer).

Wed Sep 05 14:24:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS,README,build.py,secore/,xappy/__init__.py: Rename secore
	  to xappy.  Adjust accompanying scripts and documentation
	  accordingly.

Wed Sep 05 02:23:46 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection_doctest2.txt: Change expected output to
	  match output given by xapian SVN HEAD, once the bug in
	  check_at_least is resolved.

Fri Aug 17 14:41:13 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* perftest/index_from_dump.py: Remove pointless "os.stat"

Fri Aug 17 14:38:46 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/indexerconnection.py: Add a method to get a list of the
	  fields which have actions defined.

Thu Aug 16 17:42:30 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/indexerconnection.py: Add a check for the database not
	  having been closed.
	* secore/searchconnection.py: Add method for getting an iterator
	  over all the documents in the database.  Add support for
	  rerunning the attempted access if get_document() catches a
	  DatabaseModifiedError.
	* secore/searchconnection_doctest2.txt: Change
	  "get_significant_terms" to "significant_terms()", and test it.

Thu Aug 16 17:24:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py,secore/searchconnection_doctest2.txt:
	  Add new method "get_significant_terms()" which returns the most
	  significant terms in the set of ids specified.

Thu Aug 16 10:22:16 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection_doctest2.txt: Add test for supplying a
	  document ID to query_similar() which isn't in the database.

Thu Aug 16 09:49:09 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Add documentation for similarity search.

Thu Aug 16 09:15:44 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Retry the expand until we don't get a
	  DatabaseModifiedError.

Thu Aug 16 09:06:44 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py,secore/searchconnection_doctest2.txt:
	  Implementation of the query_similar() method, returning a query
	  to use to get a new set of results based on similarity.

Wed Aug 08 18:52:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py,secore/searchconnection_doctest2.txt:
	  Add API for performing searches for similar documents.  Currently
	  just works out which fields should be used for performing the
	  similarity comparison, but doesn't do the actual similarity
	  search.

Wed Aug 08 13:37:26 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Fix up calculation of significant
	  digits to cope with extreme values (ie, 0), to round to the
	  nearest significant digit (previously, it rounded down), and to
	  use math.log10 instead of a loop to calculate the logarithm.

Wed Aug 08 13:21:41 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Fix issue with new match estimate
	  rounding when match estimate is 0.

Wed Aug 08 03:17:37 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Improve documentation comment.

Wed Aug 08 03:13:10 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Add "matches_human_readable_estimate"
	  to search results - returns an estimate of the number of matching
	  documents, rounded according to how tight the upper and lower
	  bounds are.

Sat Aug 04 08:16:01 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Add convenience methods for checking
	  if a particular field can be collapsed or sorted on.

Sat Aug 04 03:09:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst,secore/: Reorganise field structures,
	  allowing us to support multiple occurrences of facets of string
	  type for a single document.  This change requires all databases
	  to be rebuilt.  Tests updated accoringly.  Also, requires latest
	  SVN HEAD build of xapian.

Wed Aug 01 14:45:41 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection_doctest2.txt: Test for multiple facet
	  values in a single document (currently fails, due to this not
	  being supported correctly yet)

Wed Aug 01 14:23:24 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection_doctest2.txt: More tests, including a
	  regression test for bug with facet calculation on database with
	  no facet fields defined.

Wed Aug 01 12:43:57 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection_doctest2.txt: Improve test coverage.

Wed Aug 01 12:28:48 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Fix bug when facet calculation is
	  requested, but no facet fields are present in the database (used
	  to throw an exception when the list of suggested facets was
	  requested in this case - now it just returns an empty list).

Tue Jul 31 08:34:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/indexerconnection_doctest2.txt,secore/searchconnection.py,
	  secore/searchconnection_doctest3.txt: Improve test coverage - in
	  particular, add tests of various conditions which cause errors.

Mon Jul 30 16:10:52 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/datastructures.py,secore/datastructures_doctest1.txt:
	  Add test for terms which are too long, and note in the code about
	  why this restriction exists, and how it could be removed.

Mon Jul 30 14:29:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Update test for displaying a facet range.

Mon Jul 30 14:29:08 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Update documentation comment for
	  query_facet() method.

Mon Jul 30 12:38:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Fix bug with handling of facets of
	  type 'float'.

Fri Jul 27 02:04:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/fieldactions.py,secore/searchconnection.py: Add facet
	  searching.

Fri Jul 27 01:13:27 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: For facet selection - don't return
	  facets which only have 1 or 0 values.

Thu Jul 26 17:02:33 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/datastructures.py: Warn early if a field is too long:
	  we might be able to replace this by hashing if necessary, but
	  this is better than waiting for the xapian error in this case.

Wed Jul 25 08:37:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Add documentation on indexing and
	  searching facets.

Wed Jul 25 03:06:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Correct small initialisation bug.

Wed Jul 25 01:53:51 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/: Change string marshalling to use xapian's stuff; cuts
	  down code, uses a more compact representation, and is compatible
	  with the facet range calculation stuff.  Update tests to cover
	  the facet calculation stuff in more detail (but still need more
	  coverage).  Fix bug with converting string range to a numeric
	  range more than once if get_suggested_facets is called
	  repeatedly.

Tue Jul 24 10:32:56 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/fieldactions.py,secore/searchconnection.py,
	  secore/searchconnection_doctest2.txt: Add the "FACET" action, to
	  store facets for field search and facet selection.  Still
	  remaining is to change the serialisation of floats to match
	  Xapian to make the numeric range calculation work correctly,
	  translate the resulting numeric ranges into a more suitable
	  python representation, and handle multiple values for a
	  particular facet being specified for a single document.

Mon Jul 23 10:59:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst,secore/searchconnection.py: Add special
	  value of -1 for checkatleast parameter, to check all matches, and
	  document it (and the general reason for setting the checkatleast
	  parameter when using get_top_tags()).

Mon Jul 23 10:40:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/: Add missing synonym stuff.

Tue Jul 17 13:42:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst,secore/fieldactions.py,
	  secore/searchconnection.py: Add some documentation of tags, and
	  fix a couple of bugs.

Tue Jul 17 13:25:10 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/fieldactions.py,secore/searchconnection.py: Add support
	  for tagging - as yet, undocumented, and minimally tested.

Mon Jul 16 11:32:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Check for KeyError when getting a
	  slot number for a range restriction, too.

Mon Jul 16 11:18:36 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Check for KeyError when accessing
	  list of field actions, and behave as if an empty list was found
	  if the field is unknown.

Fri Jul 13 16:39:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Add an option to query_filter to
	  return only those documents which _don't_ match the filter,
	  instead of those which do.
	* secore/searchconnection_doctest2.txt: Add a test for using a
	  filter with exclude=True.

Mon Jul 09 11:23:56 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Convert supplied sequence of queries
	  to list, since xapian query constructor isn't happy to take an
	  iterator.

Fri Jul 06 16:38:11 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/indexerconnection.py: Fix bug in replace() causing the
	  document data not to be stored.

Wed Jul 04 17:24:40 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst,perftest/index_from_dump.py,secore/:
	  Change all occurrences of unique_id to just "id" - no need to say
	  the unique bit, so it's just wasted typing.

Mon Jul 02 09:08:39 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: If a search connection is opened
	  before the fieldmappings file has been created, give it an empty
	  FieldMappings object.  Also, fix a bug in handling of
	  checkatleast.

Sun Jul 01 18:13:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Add query_all(), to make a search
	  matching all documents in the database.

Fri Jun 29 09:36:49 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/searchconnection.py: Encode correctly spelt queries in UTF8,
	  for consistency with output of Xapian.
	* secore/searchconnection_doctest2.txt: Test spelling correction
	  with unicode strings.

Fri Jun 29 09:00:14 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/indexerconnection_doctest3.txt,
	  secore/searchconnection_doctest2.txt: Improve test coverage.

Fri Jun 29 08:47:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst,secore/: Finally, properly implement and
	  document the spelling correction support.

Thu Jun 28 23:33:06 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Fix documentation of parameters to
	  INDEX_FREETEXT, and adjust an example to give expected output
	  after recent fix to highlighting.
	* secore/fieldactions.py: Add an option allowing indexing without
	  positional information, and an option allowing indexing with
	  spelling correction.
	* secore/highlight.py,secore/searchconnection_doctest1.txt: Update
	  output of examples to match recent fix to highlighting.

Thu Jun 28 15:26:36 BST 2007  Tom Mortimer <tom@lemurconsulting.com>

	* secore/fieldactions.py: Add stopwording, and an option not to
	  store prefixed terms, to freetext indexing.
	* secore/highlight.py: Fix a bug causing the requested maxlength to
	  be exceeded if the derived blocks were too big.

Fri Jun 08 15:37:21 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS,testdata/query_sourcewords.txt: Add source words for
	  generating queries to test with, and list the copyright holders
	  in AUTHORS.
	* perftest/: Add some routines for performing performance tests,
	  and analysing the logs of these tests.
	* perftest/parse_wikipedia/: Add some routines which convert XML
	  dumps of wikipedia data into scriptindex compatible forms.

Fri Jun 08 11:58:54 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* Initial import into code.google.com repository.

Wed May 16 20:03:02 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* Remove textprocessor.py in favour of using the new TermGenerator
	  stuff in Xapian 1.0.0.  Implement sorting by date or floating
	  point.  Add query_range() method for searching all documents in a
	  given range.

Wed May 16 15:44:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* README: Add a note on the name, and list docutils as a
	  dependency.

Wed May 16 10:27:22 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/indexerconnection.py: Add get_document() method, to get a
	  document given it's unique ID.

Fri Apr 27 18:34:25 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* README: Adjust some paths.

Fri Apr 27 18:22:19 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Finish documentation by documenting
	  collapse.

Fri Apr 27 18:17:41 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: And the section of sorting is done.

Fri Apr 27 18:00:32 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Finished section on searching, apart from
	  bits on sorting and collapsing.

Fri Apr 27 17:11:16 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* docs/introduction.rst: Finished section on indexing.

Fri Apr 27 16:41:23 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* build.py: Change method of calling rst2html and epydoc to avoid
	  using system, and hopefully be cross-platform.

Fri Apr 27 16:05:44 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* AUTHORS,COPYING_GPL: Add files listing authors, copyrights and
	  license.

Fri Apr 27 16:00:08 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* build.py,secore/__init__.py,testsuite/runtests.py: Fix headers to
	  contain licenses and appropriate comments.

Fri Apr 27 15:50:50 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* README,build.py,docs/makedocs.py: Move makedocs.py to build.py,
	  and add documentation on the prerequisites needed.

Fri Apr 27 15:16:34 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* README,docs/introduction.rst: Move details of how to run
	  testsuite from README into new file, together with basic
	  introduction to secore.  (Sections which need finishing are
	  marked with FIXME.)
	* docs/makedocs.py: Add script which makes all the documentation.
	* testsuite/runtests.py: Add ability to test doctests in external
	  documentation, and add 'docs/introduction.rst' to the tests.

Fri Apr 27 14:14:58 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* README: Add a basic README to point users to the appropriate
	  documentation.

Fri Apr 27 13:16:45 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* coverage.py,runtests.py,testsuite/runtests.py: Move the testsuite
	  into a subdirectory, to tidy up the top level.

Fri Apr 27 12:45:18 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* secore/datastructures.py,secore/errors.py: Fixes to documentation
	  comments to make epydoc happier.

Fri Apr 27 12:37:29 BST 2007  Richard Boulton <richard@lemurconsulting.com>

	* ChangeLog: Added new file, to keep track of changes.
	  Current project status:
	  - Basic API complete and implemented.
	  - Tests cover all lines of code, apart from TextProcessor, which
	    is scheduled for removal soon anyway.
