Closed hadees closed 10 years ago
As I understood it, this:
var idx = new lunr.Index;
doesn't add the stopWordFilter or stemmer. You have to actually add those:
idx.pipeline.add(lunr.stopWordFilter, lunr.stemmer);
As @brockfanning says it is possible to create an index with a completely empty pipeline, using lunr()
is just a convenience that provides the defaults that will work for most people, if you need to start customising things you can just create an index with its constructor new lunr.Index
.
What config values do you want to pass in when creating the index though?
I guess new lunr.Index
does do what I wanted but it still seems a little strange to me.
I was thinking something along the lines of being able to pass in an array that gets set the the pipeline. It would allow me to pass in an empty array and also would be it easier for people adding other pipelines instead of having to call pipeline.add
for each one.
I'm working on a feature to add better support for languages other than english, as part of that the whole pipeline does need to reset so this should be easier in the next version, see https://github.com/olivernn/lunr.js/issues/16#issuecomment-23152114 for some more detail.
Currently lunr.Pipeline.prototype.add
does allow adding more than one function to the pipeline at a time, so you could do something like this:
var idx = new lunr.Index
idx.pipeline.add(fn1, fn2, fn3)
The latest release adds a new method to reset the existing pipeline lunr.Pipeline.prototype.reset
so you could do the following to completley customise the pipeline.
idx.pipeline.reset()
idx.pipeline.add(fn1, fn2, fn3)
It would be nice to be able to pass in some config values instead of having to manually remove the
stopWordFilter
andstemmer
from the pipeline.