- Fix bug #469 where a union with a complete set returned a non-complete set. Thanks Bertrand Le Roy for reporting and fixing.
- Fix bug #422 where a pipline function that returned null was not skipping the token as described in the documentation. Thanks Stephen Cleary and Rob Hoelz for reporting and investigating.
- Fix bug #417 where leading white space would cause token position metadata to be reported incorrectly. Thanks Rob Hoelz for the fix.
- Fix bug #390 with fuzzy matching that meant deletions at the end of a word would not match. Thanks Luca Ongaro for reporting.
- Fix bug #375 with fuzzy matching that meant insertions at the end of a word would not match. Thanks Luca Ongaro for reporting and to Rob Hoelz for providing a fix.
- Switch to using
Array.isArray
when checking for results from pipeline functions to supportvm.runInContext
, #381 thanks Rob Hoelz.
- Ensure that inverted index is prototype-less after serialization, thanks Rob Hoelz.
- Fig bugs #270 and #368, some wildcard searches over long tokens could be extremely slow, potentially pinning the current thread indefinitely. Thanks Kyle Spearrin and Mohamed Eltuhamy for reporting.
- Fix bug #369 in parsing queries that include either a boost or edit distance modifier followed by a presence modifier on a subsequent term. Thanks mtdjr for reporting.
- Add workaround for inconsistent browser behaviour #279, thanks Luca Ongaro.
- Fix bug in intersect/union of
lunr.Set
#360, thanks Brandon Bethke for reporting.
- Add support for build time field and document boosts.
- Add support for indexing nested document fields using field extractors.
- Prevent usage of problematic characters in field names, thanks Stephane Mankowski.
- Fix bug when using an array of tokens in a single query term, thanks Michael Manukyan.
- Fix bug #344 in logic for required terms in multiple fields, thanks Stephane Mankowski.
- Upgrade mocha and fix some test snafus.
- Add support for queries with term presence, e.g. required terms and prohibited terms.
- Add support for using the output of
lunr.tokenizer
directly withlunr.Query#term
. - Add field name metadata to tokens in build and search pipelines.
- Fix documentation for
lunr.Index
constructor, thanks Michael Manukyan.
- Fix bug #320 which caused result metadata to be nested under search term instead of field name. Thanks Jonny Gerig Meyer for reporting and fixing.
- Cache inverse document calculation during build to improve build performance.
- Introduce new method for combining term metadata at search time.
- Improve performance of searches with duplicate search terms.
- Tweaks to build process.
- Remove private tag from
lunr.Builder#build
, it should be public, thanks Sean Tan.
- Fix bug #282 which caused metadata stored in the index to be mutated during search, thanks Andrew Aldridge.
- Fix bug #280 in builder where an object with prototype was being used as a Map, thanks Pete Bacon Darwin.
- Improve handling of term boosts across multiple fields #263
- Enable escaping of special characters when performing a search #271
- Add ability to programatically include leading and trailing wildcards when performing a query.
- Fix bug in IDF calculation that meant the weight for common words was not correctly calculated.
- Fix bug #256 where duplicate query terms could cause a 'duplicate index' error when building the query vector. Thanks Bjorn Svensson, Jason Feng, and et1421 for reporting and confirming the issue.
- Fix bug #255 where search queries used a different separator than the tokeniser causing some terms to not be searchable. Thanks Wes Cossick for reporting.
- Reduce precision of term scores stored in document vectors to reduce the size of serialised indexes by ~15%, thanks Qvatra for the idea.
- Fix regression #254 where documents containing terms that match properties from Object.prototype cause errors during indexing. Thanks VonFry for reporting.
- Indexes are now immutable, this allows for more space efficient indexes, more advanced searching and better performance.
- Text processing can now attach metadata to tokens the enter the index, this opens up the possibility of highlighting search terms in results.
- More advanced searching including search time field boosts, search by field, fuzzy matching and leading and trailing wildcards.
- Deprecate incorrectly spelled lunr.tokenizer.separator.
- No other changes, but bumping to 1.0.0 because it's overdue, and the interfaces are pretty stable now. It also paves the way for 2.0.0...
- Fix bug when loading a serialised tokeniser #226, thanks Alex Turpin for reporting the issue.
- Learn how to spell separator #223, thanks peterennis for helping me learn to spell.
- Correctly set the license using the @license doc tag #217, thanks Carlos Araya.
- Make tokenizer a property of the index, allowing for different indexes to use different tokenizers #205 and #21.
- Fix bug that prevented very large documents from being indexed #203, thanks Daniel Grießhaber.
- Performance improvements when adding documents to the index #208, thanks Dougal Matthews.
- Ensure document ref property type is preserved when returning results #117, thanks Kyle Kirby.
- Introduce
lunr.generateStopWordFilter
for generating a stop word filter from a provided list of stop words. - Replace array-like string access with ES3 compatible
String.prototype.charAt
#186, thanks jkellerer. - Move empty string filtering from
lunr.trimmer
tolunr.Pipeline.prototype.run
so that empty tokens do not enter the index, regardless of the trimmer being used #178, #177 and #174 - Allow tokenization of arrays with null and non string elements #172.
- Parameterize the seperator used by
lunr.tokenizer
, fixes #102.
- Implement
lunr.stopWordFilter
with an object instead of usinglunr.SortedSet
#170, resulting in a performance boost for the text processing pipeline, thanks to Brian Vaughn. - Ensure that
lunr.trimmer
does not introduce empty tokens into the index, #166, thanks to janeisklar
## 0.5.11
- Fix bug when using the unminified build of lunr in some project builds, thanks Alessio Michelini
- Fix bug in IDF calculation, thanks to weixsong for discovering the issue.
- Documentation fixes #111 thanks Chris Van.
- Remove version from bower.json as it is not needed #160, thanks Kevin Kirsche
- Fix link to augment.js on the home page #159, thanks Gábor Nádai
- Remove recursion from SortedSet#indexOf and SortedSet#locationFor to gain small performance gains in Index#search and Index#add
- Fix incorrect handling of non existant functions when adding/removing from a Pipeline #146 thanks to weixsong
- Fix typo when referencing Martin Porter's home page http://tartarus.org/~martin/ #132 thanks James Aylett
- Performance improvement for tokenizer #139 thanks Arun Srinivasan
- Fix vector magnitude caching bug 😳 #142 thanks Richard Poole
- Fix vector insertion bug that prevented lesser ordered nodes to be inserted into a vector #143 thanks Richard Poole
- Fix inefficient use of arguments in SortedSet add method, thanks to Max Nordlund.
- Fix deprecated use of path.exists in test server #141 thanks wei song
- Performance improvement for stemmer #124 thanks Tony Jacobs
- Performance improvement when add documents to the index #114 thanks Alex Holmes
- Fix bug in tokenizer introduced in 0.5.4 #101 thanks Nolan Lawson
- Tokenizer also splits on hyphens #98 thanks Nolan Lawson
- Correctly stem words ending with the letter 'y' #84 thanks Mihai Valentin
- Improve build tools and dev dependency installation #78 thanks Ben Pickles
- Use npm they said, it'll be easy they said.
- Because npm issues :(
- Add plugin support to enable i18n and other extensions to lunr.
- Add AMD support #72 thanks lnwdr.
- lunr.Vector now implemented using linked lists for better performance especially in indexes with large numbers of unique tokens.
- Build system clean up.
- Fix performance regression introduced in 0.4.4 by fixing #64.
- Fix bug #64 idf cache should handle tokens with the same name as object properties, thanks gitgrimbo.
- Intersperse source files with a semicolon as part of the build process, fixes #61, thanks shyndman.
- Fix bug #47 tokenizer converts its input to a string before trying to split it into tokens, thanks mikhailkozlov.
- Add index mutation events ('add', 'update' and 'remove').
- Performance improvements to searching.
- Penalise non-exact matches so exact matches are better ranked than expanded matches.
- Fix bug #32 which prevented lunr being used where a
console
object is not present, thanks Tony Marklove and wyuenho
- Fix bug #24 that caused an error when trying to remove a non-existant document from the index, thanks Jesús Leganés Combarro
- Implement JSON serialisation, allows indexes to be loaded and dumped, thanks ssured.
- Performance improvements to searching and indexing.
- Fix bug #15 with tokeniser that added stray empty white space to the index, thanks ssured.
- Fix issue with searching for a term not in the index #12, thanks mcnerthney and makoto
- Boost exact term matches so they are better ranked than expanded term matches, fixes #10, thanks ssured
- Changes to the build process.
- Add component.json and package.json
- Add phantomjs test runner
- Remove redundant attributes
- Many spelling corrections, thanks Pascal Borreli