0
0
A modern text indexing library for go. (this is a mirror of the github repository) http://www.blevesearch.com/
Go to file
Marty Schoch b8a2fbb887 fix data race in bleve batch reuse
Currently bleve batch is build by user goroutine
Then read by bleve gourinte
This is still safe when used correctly
However, Reset() will modify the map, which is now a data race

This fix is to simply make batch.Reset() alloc new maps.
This provides a data-access pattern that can be used safely.
Also, this thread argues that creating a new map may be faster
than trying to reuse an existing one:

https://groups.google.com/d/msg/golang-nuts/UvUm3LA1u8g/jGv_FobNpN0J

Separate but related, I have opted to remove the "unsafe batch"
checking that we did.  This was always limited anyway, and now
users of Go 1.6 are just as likely to get a panic from the
runtime for concurrent map access anyway.  So, the price paid
by us (additional mutex) is not worth it.

fixes #360 and #260
2016-04-08 15:32:13 -04:00
analysis fix ineffectual assignments 2016-04-02 22:42:56 -04:00
config moving japanese analyzer to blevex package 2016-03-13 18:05:05 -04:00
docs set GIT_BRANCH to TRAVIS_BRANCH 2015-11-23 11:10:55 -05:00
document add support for numPlainTextBytesIndexed metric 2016-03-05 14:05:08 -05:00
http try to close indexes at end of http handler test 2016-02-09 16:26:03 -05:00
index fix data race in bleve batch reuse 2016-04-08 15:32:13 -04:00
numeric_util simplify prefix coding 2015-10-12 14:53:17 -07:00
registry a few more gofmt simplifications 2016-04-02 22:48:00 -04:00
search more gofmt simplifications 2016-04-03 00:03:33 -04:00
test allow running integration tests on alternate kvstore 2016-03-07 08:40:15 -05:00
utils more enhancements to bleve_query 2015-12-16 14:52:33 -05:00
vendor add initial manifest 2016-04-08 15:03:05 -04:00
.gitignore add initial manifest 2016-04-08 15:03:05 -04:00
.travis.yml switch to containerized builds 2016-01-07 09:57:23 -05:00
config.go give indexes names, make stats available via expvar by default 2015-12-06 14:01:03 -05:00
doc.go apply doc fix patch from rakoo 2014-09-07 09:09:47 -04:00
error.go remove temporary error and replace with permanent check 2016-02-03 10:23:49 -05:00
examples_test.go fix some test failures on windows 2016-02-09 13:33:11 -05:00
index_alias_impl_test.go fix ineffectual assignments 2016-04-02 22:42:56 -04:00
index_alias_impl.go more defensive merging of errors in search result status 2016-03-10 16:04:05 -05:00
index_alias.go Fix typos in comments and strings 2014-12-18 18:43:12 +01:00
index_impl.go export the Validate method on mapping objects 2016-03-28 17:14:41 -04:00
index_meta_test.go fix issues identified by errcheck 2015-04-07 15:39:56 -04:00
index_meta.go Minor fix to ensure full index path exists 2016-03-13 21:44:21 -06:00
index_stats.go moved fields requiring 64-bit alignment to start of struct 2016-03-20 10:38:28 -04:00
index_test.go fix data race in bleve batch reuse 2016-04-08 15:32:13 -04:00
index.go add support for gathering stats via map for easier consumption 2016-03-07 18:37:46 -05:00
LICENSE adding license file 2014-04-17 17:03:15 -04:00
mapping_document.go export the Validate method on mapping objects 2016-03-28 17:14:41 -04:00
mapping_field.go add support for toggling Store/Index Dynamic in IndexMapping 2016-03-08 07:58:29 -05:00
mapping_index.go gofmt simplifications 2016-04-02 21:54:33 -04:00
mapping_test.go fix handling of dynamic property in mappings of sub-documents 2016-03-11 12:18:24 -05:00
query_bool_field.go Implemented boolean field support 2016-01-11 17:18:03 -08:00
query_boolean.go boolean query defaults to minShould of 0 2016-01-12 16:30:10 -05:00
query_conjunction.go major refactor of kvstore/index internals, see below 2014-09-12 17:21:35 -04:00
query_date_range.go Fix typos in comments and strings 2014-12-18 18:43:12 +01:00
query_disjunction.go major refactor of kvstore/index internals, see below 2014-09-12 17:21:35 -04:00
query_docid.go query_docid: add DocIDQuery to filter by document identifiers 2015-11-04 18:41:16 +01:00
query_fuzzy.go Fix some typos 2016-01-15 05:46:27 +07:00
query_match_all.go fix marshaling of MatchAll queries 2016-04-07 18:20:35 -04:00
query_match_none.go major refactor of kvstore/index internals, see below 2014-09-12 17:21:35 -04:00
query_match_phrase.go mapping_field: document IncludeTermVectors 2015-11-19 15:38:16 +01:00
query_match.go clean up logging to use package level *log.Logger 2014-12-28 12:14:48 -08:00
query_numeric_range.go Update NumericRangeQuery comments 2015-11-12 22:16:10 +01:00
query_phrase.go mapping_field: document IncludeTermVectors 2015-11-19 15:38:16 +01:00
query_prefix.go major refactor of kvstore/index internals, see below 2014-09-12 17:21:35 -04:00
query_regexp.go more correct fix, handles case where validate is called 2016-01-21 17:26:24 -05:00
query_string_parser_test.go fix query string query syntax when term starts with a number 2015-05-21 15:43:13 -04:00
query_string_parser.go when generating parser, run go fmt on the lexer 2015-01-02 10:02:20 -08:00
query_string.go major refactor of kvstore/index internals, see below 2014-09-12 17:21:35 -04:00
query_string.nex fix query string query syntax when term starts with a number 2015-05-21 15:43:13 -04:00
query_string.nn.go fix query string query syntax when term starts with a number 2015-05-21 15:43:13 -04:00
query_string.y fix query parser to recognize field prefix before fuzzy tilde 2015-01-19 16:20:32 -05:00
query_string.y.go fix query parser to recognize field prefix before fuzzy tilde 2015-01-19 16:20:32 -05:00
query_term.go major refactor of kvstore/index internals, see below 2014-09-12 17:21:35 -04:00
query_test.go boolean query defaults to minShould of 0 2016-01-12 16:30:10 -05:00
query_wildcard.go added regexp and wildcard queries 2015-03-11 16:57:22 -04:00
query.go from JSON parsing regexp/wildcard queries defaulted to boost of 0 2016-02-23 09:22:39 -05:00
README.md adding goreportcard 2016-04-02 21:01:23 -04:00
reflect.go typo in lookupPropertyPathPart() func name 2015-11-23 09:27:22 -08:00
search_test.go SearchResult now includes a Status section 2016-02-22 16:50:40 -05:00
search.go search request JSON omitting size, now defaults to 10 2016-03-31 09:56:06 -04:00

bleve bleve

Build Status Coverage Status GoDoc Join the chat at https://gitter.im/blevesearch/bleve codebeat Go Report Card

modern text indexing in go - blevesearch.com

Try out bleve live by searching our wiki.

Features

  • Index any go data structure (including JSON)
  • Intelligent defaults backed up by powerful configuration
  • Supported field types:
    • Text, Numeric, Date
  • Supported query types:
    • Term, Phrase, Match, Match Phrase, Prefix
    • Conjunction, Disjunction, Boolean
    • Numeric Range, Date Range
    • Simple query syntax for human entry
  • tf-idf Scoring
  • Search result match highlighting
  • Supports Aggregating Facets:
    • Terms Facet
    • Numeric Range Facet
    • Date Range Facet

Discussion

Discuss usage and development of bleve in the google group.

Indexing

	message := struct{
		Id   string
		From string
		Body string
	}{
		Id:   "example",
		From: "marty.schoch@gmail.com",
		Body: "bleve indexing is easy",
	}

	mapping := bleve.NewIndexMapping()
	index, err := bleve.New("example.bleve", mapping)
	if err != nil {
		panic(err)
	}
	index.Index(message.Id, message)

Querying

	index, _ := bleve.Open("example.bleve")
	query := bleve.NewQueryStringQuery("bleve")
	searchRequest := bleve.NewSearchRequest(query)
	searchResult, _ := index.Search(searchRequest)

License

Apache License Version 2.0