IMPORTANT: + FIX file descriptor overflow. See Tickets 341 and 343
add .. operator to query parser. For example, [100 200] could be written as
100..200 or 100...201 like in Ruby Ranges
remove exception handling from C code. All errors to be handled by return
values.
Move to sqlite‘s locking model. Ferret should work fine in a
multi-process environment.
Add optional logging. To be enabled at compilation time, perhaps?
Add support for changing zlib and bzlib compression parameters
Improve unit test coverage to 100%
Add benchmark suite
Add Rakefile for development purposes + task to publish gcov and benchmark
results to ferret wiki
Index rebuilding of old versioned indexes.
Add a globally accessable, threadsafe symbol table. This will be very
useful for storing field names so that no objects need to strdup the
field-names but can just store the symbol representative instead. + this
has been done but it can be improved using actual Symbol structs
instead of plain char*
Make threading optional at compile time
to_json should limit output to prevent memory overflow on large indexes.
Perhaps we could use some type of buffered read for this.
Make BitVector run as fast as bitset from C++ STL. See;
c/benchmark/bm_bitvector.c
Add a symbol table for field names. This will mean that we won‘t need
to worry about mallocing and freeing field names which happens all over the
place.
Divide the headers into public and private (the private headers to be
stored in the src directory).
Group-by search. ie you should be able to pass a field to group search
results by
Auto-loading of documents during search. ie actual documents get returned
instead of document numbers.
Ruby bindings
argument checking for every method. We need a new api for argument checking
so that the arguments get checked at the start of each method that could
cause a segfault.
improve memory management. It was way to complex at the moment. I also need
to document how it works so that other developers understand what is going
on.
Replace Data_Wrap_Struct with ferret alternative which handles rewrapping
of structs automatically and also knows when to release a struct by using
refcounting.
FIX :create parameter so that it only deletes the files owned by Ferret.
fix compression. Currently nothing is happening if you set a field to
:compress. I guess we‘ll just assume zlib is installed, as I think it
has to be for Ruby to be installed.
add bzlib support
integrate gcov
add a field cache to IndexReader
setup email alerts for svn commits
Ranged, unordered searching. Ie search through the index until you have the
required number of documents and then break. This will require the ability
to start searches from a particular doc-num. + See
searcher_search_unordered in the C code and Searcher#scan in Ruby
improve unit test code. I‘d like to implement some way to print out a
stack trace when a test fails so that it is easy to find the source of the
error.
catch segfaults and print stack trace so users can post helpful bug
tickets. again, see the same links for adding stacktrace to unit tests.