HNHacker News
TopNewBestAskShowJobs

mschoch

93 karma · joined December 13, 2011

fuck dang's pretty little butthole, all night long
submissionscomments
mschoch··on Go-Freeling: Natural Language Processing in Go
If you just want to segment larger blocks of text into tokens you can try the segment library (it implements the word boundary portion of unicode annex 29):

https://github.com/blevesearch/segment

If you need more manipulation of tokens after segmentation/tokenization, you could look at the analysis sub-package of bleve. Its intended to be able to be used indepenently of the rest of the library.

https://github.com/blevesearch/bleve

mschoch··on Bleve – A modern text indexing library for Go
We have support for limited version of it right now. The syntax we support is documented here:

https://github.com/blevesearch/bleve/wiki/Query-String-Query

You can see an example query using it executed here:

http://wikisearch.blevesearch.com/search/?q=name:query%20%2B...

A few things that are missing from the syntax. Numeric ranges only support simple one-sided syntax (age:>25), not a two-sided range (age:[25 to 30]). Date ranges aren't supported yet. Complex boolean expressions using parens, AND and OR. Those are things that we support in structured queries, just haven't wired up the grammar for it yet. There are handful of others we don't support at all yet, like wildcard, and proximity searches.

The grammar is also still pretty simple, with an emphasis on making simple things work, not on things like escaping special characters within expressions.

mschoch··on Bleve – A modern text indexing library for Go
Thanks for taking an interest.

I would say that we're most comparable to Lucene, given that we're a library not a server. But, we're also very much not a port of Lucene to go. That already exists, and someone has posted that link elsewhere in this thread. I've worked a fair amount with Elasticsearch, so a lot of the higher level API is inspired by it. And thats one of the biggest differences between Bleve and Lucene today. Lucene is pretty low-level. The bleve top-level API works a lot more like Elasticsearch (specifically there is a mapping, its serialized and stored in the index). There is a lower level that looks more like Lucene (everything is just documents and fields), and the top-level API builds on top of that.

That is I would say the primary goal of Bleve, to be a great text indexing and search library for Go.

Next you asked about a REST interface. Bleve ships with HTTP handlers in a sub-package. These are completely optional, you can use Bleve without them, or you could write your own if you don't like these. There is a not-quite-done-yet example app that uses these to make it look a lot like a single-node Elasticsearch. But, its just an example app, I have no immediate plans to try to turn this into a production app.

Regarding scaling beyond a single embedded instance... Obviously there is a lot of interest in this area. The way I'm looking at this right now is that this is simply a layer above Bleve, much as Elasticsearch/Solr provide this as a layer above Lucene. There are a few enhancements we could add to streamline this, like allowing the Searches to operate across multiple indexes.

My hope is that lots of apps spring up around Bleve. Maybe someone wires up the HTTP handlers and Raft and makes an Elasticsearch clone. Maybe people will do something I don't expect. Will we go there? Not right now, we've got our hands full. But if we do, it will be in a separate project, built on top of Bleve.

mschoch··on Bleve – A modern text indexing library for Go
We haven't yet. Our philosophy has been to get the features and API right first.

Though there is some low hanging fruit I'd like to tackle this week. First there will be some bleve only indexing and querying benchmarks to validate those improvements. Then we should be in better shape to do comparisons against lucene.

mschoch··on Bleve – A modern text indexing library for Go
Author here, will try to answer questions as best I can from my phone.

Yes, I think I was watching one of those amazing explosions shows on Netflix. I liked the way it sounded, and it suggested some simple logo ideas.

← PreviousPage 2 of 2