Comments (2)
how to add custom weight to each key
the readme shows how to do weighted searches. you write a scoreFn that works however you want.
let objects = [{title:'Favorite Color', desc:'Chrome'}, {title:'Google Chrome', desc:'Launch Chrome'}]
let results = fuzzysort.go('chr', objects, {
keys: ['title', 'desc'],
// Create a custom combined score to sort by. -100 to the desc score makes it a worse match
scoreFn: scores => {
const titlescore = scores[0]?.score || -1000
const descscore = scores[1]?.score - 100 || -1000
return Math.max(titlescore, descscore)
}
})
var bestResult = results[0]
// When using multiple `keys`, results are different. They're indexable to get each normal result
fuzzysort.highlight(bestResult[0]) // 'Google <b>Chr</b>ome'
fuzzysort.highlight(bestResult[1]) // 'Launch <b>Chr</b>ome'
bestResult.obj.title // 'Google Chrome'
how to search through these nested tags?
idk, you can't do that. combining all the tags into a single combined_tags
string probably works fine
let objects = [
{title:'Favorite Color', desc:'Chrome'},
{title:'Google Chrome', desc:'Launch Chrome', tags:[{title:'browser'}, {title:'program'}]}
]
// combine optional tags into a single string we can search
for(const obj of objects) obj.combined_tags = obj.tags?.map(t => t.title).join(' ')
let results = fuzzysort.go('chr', objects, {
keys: ['title', 'desc', 'combined_tags'],
scoreFn: scores => {
const titlescore = scores[0]?.score || -1000
const descscore = scores[1]?.score - 100 || -1000
const tagscore = scores[2]?.score - 100 || -1000
return Math.max(titlescore, descscore, tagscore)
}
})
console.log(results)
from fuzzysort.
this all now just works in fuzzysort v3
let items = [{title: 'sup', description: 'not much', tags: ['funny']}]
fuzzysort.go('u', items, {
keys: ['title', 'description', obj => obj.tags?.join()],
scoreFn: r => r[0].score * 1.00 + r[1].score * .60 + r[2].score * .40,
})
``
from fuzzysort.
Related Issues (20)
- Highlight on all matched keys? HOT 2
- Uncaught ReferenceError: fuzzysort is not defined
- Sorting data that is stored as SoA (Structures of Arrays) as opposed to AoS (Arrays of Structures) HOT 1
- When using a custom scoring function, results without matches are returned HOT 3
- What's the point of returning your name HOT 1
- Feature Request
- TypeScript icon missing on npmjs HOT 1
- I am only getting exact matches HOT 1
- Error on lines 56 and 141 when using sorting 1 million results.
- Support non-English characters HOT 1
- When searching for a name containing special character, no match is found HOT 1
- Link in the "About" section is broken. HOT 1
- Even when the threshold is -Infinity there is filtering happening. HOT 3
- Understanding what are expected results HOT 1
- Adding weights per object HOT 4
- Return type of `fuzzysort.indexes` seems wrong HOT 1
- New version needs docs + examples HOT 6
- Error after updating to 3.0.0: `Cannot read properties of undefined (reading '_score')`
- Can this lib be used in the background.js of a Chrome extension development?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fuzzysort.