0
0
Commit Graph

66 Commits

Author SHA1 Message Date
Silvan Jegen
e3a2d3b58b Remove unneeded else clauses 2014-11-20 20:34:05 +01:00
Marty Schoch
47bc7caec3 added getRollbackID() and rollbackTo() to the ForestDB store 2014-11-04 08:34:49 -05:00
Marty Schoch
3f83149ed3 adding back the forestdb kv store impl 2014-10-31 09:42:32 -04:00
Marty Schoch
c7443fe52b refactored API a bit
more things can return error now
in a couple of places we had to swallow errors because they didn't
fit the existing API.  in these case and proactively in a few
others we now return error as well.

also the batch API has been updated to allow performing
set/delete internal within the batch
2014-10-31 09:40:23 -04:00
Marty Schoch
64b0066121 added support for tracking index stats and exposing via expvar
closes #83
2014-10-02 11:12:49 -07:00
Marty Schoch
97902e2619 text analysis now moved out of index write lock onto goroutine
1. text analysis is now done before the write lock is acquired
2. there is now a pool of analysis workers
3. the size of this pool is configurable
4. this allows for documents in a batch to be analyzed concurrently

as a part of benchmarking these changes i've also introduce a new
null storage implementation.  this should never be used, as it
does not actualy build an index.  it does however let us go
through all the normal indexing machinery, without incuring
any indexing I/O.  this is very helpful in measuring improvements
made to the text analsysis pipeline, which are often overshadowed
by indexing times in benchmarks actually building an index.
2014-09-24 08:13:14 -04:00
Marty Schoch
198ca1ad4d major refactor of kvstore/index internals, see below
In the index/store package
introduce KVReader
  creates snapshot
  all read operations consistent from this snapshot
  must close to release

introduce KVWriter
  only one writer active
  access to all operations
  allows for consisten read-modify-write
  must close to release

introduce AssociativeMerge operation on batch
  allows efficient read-modify-write
  for associative operations
  used to consolidate updates to the term summary rows
  saves 1 set and 1 get op per shared instance of term in field

In the index package
introduced an IndexReader
  exposes a consisten snapshot of the index for searching

At top level
  All searches now operate on a consisten snapshot of the index
2014-09-12 17:21:35 -04:00
Marty Schoch
7819deb447 added boltdb benchmark, same as others 2014-09-12 16:55:50 -04:00
Marty Schoch
2294b24b9d remove forestdb for now
not any benfefit in maintaining this for the time being
2014-09-12 16:55:11 -04:00
Marty Schoch
9d2187706e another round of golint 2014-09-03 19:53:59 -04:00
Marty Schoch
e21935f850 another round of golint cleanup 2014-09-03 19:16:46 -04:00
Marty Schoch
e1b77956d4 more golint cleanups 2014-09-03 18:47:02 -04:00
Marty Schoch
377ae090d0 additional golint issues resolved 2014-09-03 18:17:26 -04:00
Marty Schoch
d534b0836b converted ALL_CAPS constants to CamelCase 2014-09-03 17:48:40 -04:00
Marty Schoch
8e6c8e5644 continued refactoring of the mapping code
also renamed some constant that didnt follow go convetions
2014-09-03 13:02:10 -04:00
Marty Schoch
45e1b2dfc6 removing gouchstore store impl
this implementation didn't really adhere to the contract
and now that we have boltdb we have a better pure go impl
2014-09-02 13:56:35 -04:00
Marty Schoch
7a7eb2e94c add newline between license and package
this avoids cluttering godocs with the license
2014-09-02 10:54:50 -04:00
Marty Schoch
1161361bea rename imports from couchbaselabs to blevesearch 2014-08-28 15:38:57 -04:00
Marty Schoch
ef59abe4c9 added build tag 'leveldb' to enable this kv store
by default we now use the pure go boltdb kv store
it is less tested at this point but appears to work
test pass, and moves us closer to the goal of being
able to just "go get" bleve
2014-08-25 15:18:24 -04:00
Marty Schoch
45a7a6dd8e fix two missing Close calls holding iterators open 2014-08-25 15:13:15 -04:00
Marty Schoch
8bcf6adb60 changed close of read only tx to Rollback from Commit
i was seeing deadlocks before this change
using Rollback to close read only tx is what the
built-in View() impl does, so i think its safe
2014-08-25 15:11:21 -04:00
Marty Schoch
d67ee483ba change default bucket name to bleve 2014-08-25 15:11:04 -04:00
Marty Schoch
e7a8a1fbe6 fixing test 2014-08-25 12:34:16 -04:00
Marty Schoch
fbf3636a34 Merge pull request #86 from deoxxa/boltdb-storage
add boltdb storage type
2014-08-25 12:27:26 -04:00
Marty Schoch
3309c698f8 fixed Document() behavior ot return nil when doc doesn't exist 2014-08-25 08:55:14 -04:00
deoxxa
a993fa4f74 add boltdb storage type 2014-08-24 18:37:56 +10:00
Marty Schoch
27f001bc14 overhauled top-level New/Open API
New is now used to create new indexes
Open is used to open existing indexes
calls to Open no longer specify a mapping because the mapping
is serialized and stored along with the index
2014-08-20 16:58:20 -04:00
Marty Schoch
a08a7f5b2a fix broken tests 2014-08-19 10:02:33 -04:00
Marty Schoch
082a5b0b03 major change to fields
now can track array positions for field values
stored fields now include this in the key
and the back index now uses protobufs to simplify serialization
closes #73
2014-08-19 08:58:26 -04:00
Marty Schoch
c33f1668f7 refactor dump methods
improved test coverage
2014-08-15 13:12:55 -04:00
Marty Schoch
4d53db9fc8 fixed bug with internal get/set/delete, added tests 2014-08-15 09:39:41 -04:00
Marty Schoch
c526a38369 major refactor of analysis files, now wired up to registry
ultimately this is make it more convenient for us to wire up
different elements of the analysis pipeline, without having to
preload everything into memory before we need it

separately the index layer now has a mechanism for storing
internal key/value pairs.  this is expected to be used to
store the mapping, and possibly other pieces of data by the
top layer, but not exposed to the user at the top.
2014-08-13 21:14:47 -04:00
Marty Schoch
e5d4e6f1e4 refactored index layer to support batch operations
this change was then exposed at the higher levels
also the beer-sample app was upgraded to index in batches of 100
by default.  this yieled an indexing speed up from 27s to 16s.
closes #57
2014-08-11 16:27:18 -04:00
Marty Schoch
7bbaa8ecd5 added support for returning facet results with requests
supports terms, numeric ranges, and date ranges
closes #14
2014-08-11 11:03:29 -04:00
Marty Schoch
292af78b9e implemented prefix search
closes #4
2014-08-07 13:45:39 -04:00
Marty Schoch
b16c1d7f79 changed term row encoding
previously we used the format:
't' <utf-8 term> <byte separator> <16-bit field id> <utf-8 docID> <byte separator>

now we have moved the field before the term, resulting in:
't' <16-bit field id> <utf-8 term> <byte separator> <utf-8 docID> <byte separator>

this means now instead of all fields with the same term being grouped together
all terms within the same field are grouped together

this allows us to enumerate the terms used with a field

this allows us to implement prefix search, and possibly improve numeric range queries
2014-08-07 09:39:04 -04:00
Marty Schoch
41d4f67ee2 fix storing/retrieving numeric and date fields
also includes new ability to request stored fields be returned with results

closes #55 and closes #56 and closes #58
2014-08-06 13:52:20 -04:00
Marty Schoch
4ae9eb895c added method to list fields in the index
also added a corresponding http handler
2014-07-31 11:47:36 -04:00
Marty Schoch
216767953c introduced a config option to disable creating indexes if they don't already exist
closes #23 and closes #24
2014-07-30 14:29:26 -04:00
Marty Schoch
2968d3538a major refactor, apologies for the large commit
removed analyzers (these are now built as needed through config)
removed html chacter filter (now built as needed through config)
added missing license header
changed constructor signature of filters that cannot return errors
filter constructors that can have errors, now have Must variant which panics
change cdl2 tokenizer into filter (should only see lower-case input)
new top level index api, closes #5
refactored index tests to not rely directly on analyzers
moved query objects to top-level
new top level search api, closes #12
top score collector allows skipping results
index mapping supports _all by default, closes #3 and closes #6
index mapping supports disabled sections, closes #7
new http sub package with reusable http.Handler's, closes #22
2014-07-30 12:30:38 -04:00
Marty Schoch
70a8b03bed added support for composite fields 2014-07-21 17:05:55 -04:00
Marty Schoch
d3466f3919 refactored field from struct to interface 2014-07-14 14:47:05 -04:00
Marty Schoch
2c86a731b4 added DocIdReader to Index interface
added more debug capabilities
removed hard-coded limitation on number of fields in doc
2014-07-11 14:24:28 -04:00
Marty Schoch
fda861d4e7 add formatted printing of stored rows
fix critcal bug in prefix matching on stored row keys
2014-07-03 14:51:06 -04:00
Marty Schoch
9bebbec267 added support for stored fields and highlighting results 2014-06-26 11:43:13 -04:00
Marty Schoch
4af76f539d fewer allocations building byte array encodings 2014-05-19 11:02:15 -04:00
Marty Schoch
ed308eb253 tweaking perf of gouchstore 2014-05-16 15:00:51 -04:00
Marty Schoch
1b8c353787 adding some benchmarking 2014-05-16 10:09:05 -04:00
Marty Schoch
eac4dee56d fix bug in Get impl of ForestDB store 2014-05-16 10:08:23 -04:00
Marty Schoch
1c4726c16d added build tag to include forestdb (not yet public) 2014-05-15 10:32:07 -04:00