Cool project! I see you are using a positional index rather than doing bi-word matching to support positional queries. Positional indexes can be a lot larger than non-positional. What is the ratio of the size of all documents to the size of the positional inverted index?
Show HN: I wrote a full text search engine in Go
11–20 of 56 posts
Re: Show HN: I wrote a full text search engine in Go
#12Re: Show HN: I wrote a full text search engine in Go
#13Would love to hear how this compares to another popular go based full text search engine (with a not too dissimilar name) https://github.com/blevesearch/bleve ?
Re: Show HN: I wrote a full text search engine in Go
#14Re: Show HN: I wrote a full text search engine in Go
#15Cool project! I see you are using a positional index rather than doing bi-word matching to support positional queries. Positional indexes can be a lot larger than non-positional. What is the ratio of the size of all documents to the size of the positional inverted index?
Observation is spot on. Biword matching would definitely ease this. Stealing bi-word matching for a future iteration, tysm :D
For example the phrase query "United States of America" doesn't occur in the document "The United States is named after states of the North American continent. The capital of America is Washington DC". But "United States", "states of" and "of America" all appear in it.
There's a tradeoff because we still have to fetch the full document text (or some positional structure) for the filtered-down candidate documents containing all of the bi-word pairs. So it requires a second stage of disk I/O. But as I understand most practitioners assume you can get away with less IOPS vs positional index since that info only has to fetched for a much smaller filtered-down candidate set rather than for the whole posting list.
But that's why I was curious about the storage ratio of your positional index.
Re: Show HN: I wrote a full text search engine in Go
#16Great work! Would be interesting to see how it compares to Lucene performance-wise, e.g. with a benchmark like https://github.com/quickwit-oss/search-benchmark-game
Thanks! Honestly, given it's hacked together in a weekend not sure it’d measure up to Lucene/Bleve in any serious way. I intended this to be an easy on-ramp for folks who want to get a feel for how FTS engines work under the hood :)
I appreciate the technical depth of the readme, but I’m not sure it fits your easy on-ramp framing.
Keep going and keep sharing.
Re: Show HN: I wrote a full text search engine in Go
#17Did you vibe code this? A few things here and there are a bit of a giveaway imho.
Re: Show HN: I wrote a full text search engine in Go
#18Re: Show HN: I wrote a full text search engine in Go
#19Re: Show HN: I wrote a full text search engine in Go
#20Did you vibe code this? A few things here and there are a bit of a giveaway imho.
When you think OP vibe-coded the project but can’t prove it yet