olivernn
olivernn on Hacker News
Many years ago, when I was building Lunr, it was initially based on IndexedDB, but it was _much_ slower and the datasets I had in mind easily fit in memory so I didn’t pursue it. No idea if that has changed since though.
Posted by
olivernn on Thursday July 30, 2020 @01:43AM
from the zsa.io dept.
Using `charCodeAt()` for numeric keys is an interesting optimisation, I'm definitely going to try that out with Lunr.js.
I'm also interested in _why_ that is quicker though, aren't all object keys converted to strings anyway?
The last time this article was on HN I took a look at adding Okapi BM25 to lunr, from what I remember the changes don't seem to huge, its just a matter of getting the time to sit down and implement it!
Nice. It'd be interesting to see the comparative performance of the three libraries under test, e.g. time to results and possibly memory usage.
Who'd have thought the most English looking location would be in Wales ;)
Posted by
olivernn on Thursday May 16, 2013 @05:55AM
from the garysieling.com dept.
Why is it a red flag for a browser-based javascript library to require a browser for testing?
That is almost exactly what lunr is doing. It tokenises the input text, stems the tokens and filters out any stop words. The index it can be searched, the order is not relevant, a prefix search is currently used so that you can find documents containing terms without having to type the whole term exactly. The matching documents are also scored as to how relevant they are to the search term.
In the future I want to add even more powerful querying, restricting search to specific fields, taking into account the distance between terms, and adding faceted search to reduce the total documents being searched over.
One of the original goals of the project was specifically to provide a better alternative to just using the browsers built in find-in-page functionality
Since the library can be run outside of the browser (using node.js for example) the index could be generated server side, and then just passed to the client. I hadn't considered this before but it might be worth looking at.
The example (
http://lunrjs.com/example/) indexes 100 stackoverflow questions, some of which are relatively long.
If indexing performance starts to become an issue the whole search index can be moved into a web-worker, which prevents indexing from blocking the rest of the page.
Posted by
olivernn on Wednesday February 27, 2013 @08:57AM
from the blog.new-bamboo.co.uk dept.
Posted by
olivernn on Tuesday January 29, 2013 @11:22AM
from the show-hn dept.
Posted by
olivernn on Wednesday October 26, 2011 @09:58AM
from the blog.new-bamboo.co.uk dept.
I have a similar library here
http://bit.ly/fTj2Ls that uses pushState to provide a routing layer so you can handle perform ajax (or anything else you want to do) when a link is clicked. The best bit is that if JavaScript, or pushState, isn't available the links can still point to real pages on your server
Posted by
olivernn on Wednesday February 09, 2011 @07:19AM
from the blog.new-bamboo.co.uk dept.