-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
change lunr config #168
base: main
Are you sure you want to change the base?
change lunr config #168
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -14,25 +14,39 @@ | |||||||||||||||||||||||||||
this.field({{ f.field | jsonify }}) | ||||||||||||||||||||||||||||
{% endfor %} | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
//this.pipeline.remove(lunr.trimmer) | ||||||||||||||||||||||||||||
this.pipeline.remove(lunr.trimmer) | ||||||||||||||||||||||||||||
this.pipeline.remove(lunr.stemmer); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
// Add each item to the index, processing fields with semicolons | ||||||||||||||||||||||||||||
for (var item in store) { | ||||||||||||||||||||||||||||
this.add({ | ||||||||||||||||||||||||||||
{% for f in index_fields %} | ||||||||||||||||||||||||||||
{{ f.field | jsonify }}: store[item][{{ f.field | jsonify }}], | ||||||||||||||||||||||||||||
{% endfor %} | ||||||||||||||||||||||||||||
id: item | ||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||
var indexedData = {}; | ||||||||||||||||||||||||||||
{% for f in index_fields %} | ||||||||||||||||||||||||||||
var fieldValue = store[item][{{ f.field | jsonify }}]; | ||||||||||||||||||||||||||||
if (fieldValue) { | ||||||||||||||||||||||||||||
// Split semicolon-separated values and join them with spaces | ||||||||||||||||||||||||||||
indexedData[{{ f.field | jsonify }}] = fieldValue.split(";").join(" "); | ||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||
{% endfor %} | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
// Add the indexed data to the Lunr index | ||||||||||||||||||||||||||||
this.add(Object.assign(indexedData, { id: item })); | ||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
/* search function */ | ||||||||||||||||||||||||||||
function lunr_search () { | ||||||||||||||||||||||||||||
var resultdiv = document.querySelector('#lunrResults'); | ||||||||||||||||||||||||||||
var query = document.querySelector('#lunrSearchBox').value;//.toLowerCase(); | ||||||||||||||||||||||||||||
var query = document.querySelector('#lunrSearchBox').value.toLowerCase(); | ||||||||||||||||||||||||||||
/* basic search that supports operators */ | ||||||||||||||||||||||||||||
var result = idx.search(query); | ||||||||||||||||||||||||||||
// var result = idx.search(query); | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
/* Enable trailing wildcard for partial matches */ | ||||||||||||||||||||||||||||
var result = idx.query(function (q) { | ||||||||||||||||||||||||||||
query.split(lunr.tokenizer.separator).forEach(function (term) { | ||||||||||||||||||||||||||||
q.term(term, { wildcard: lunr.Query.wildcard.TRAILING }); | ||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||
Comment on lines
+45
to
+49
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle empty or whitespace query terms to prevent errors When processing the search query, empty strings or terms with only whitespace can cause issues. It's advisable to trim each term and check for emptiness before adding it to the query. Apply this diff to filter out empty terms: query.split(lunr.tokenizer.separator).forEach(function (term) {
+ term = term.trim();
+ if (term) {
q.term(term, { wildcard: lunr.Query.wildcard.TRAILING });
+ }
}); 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||
/* more fuzzy search, but doesn't support operators: | ||||||||||||||||||||||||||||
var result = | ||||||||||||||||||||||||||||
idx.query(function (q) { | ||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reconsider removing
lunr.trimmer
andlunr.stemmer
for optimal search performanceBy removing
lunr.trimmer
andlunr.stemmer
from the pipeline, you may reduce the effectiveness of search queries. Thelunr.trimmer
removes unnecessary characters from tokens, andlunr.stemmer
reduces words to their root form, allowing for better matching of different word variations. Consider retaining these processes unless there's a specific reason for their removal.Apply this diff to keep them in the pipeline: