Skip to content

Commit 6f6af51

Browse files
committed
fix(logical): scoring for logical OR
Fixes #593
1 parent 36bada4 commit 6f6af51

8 files changed

+87
-134
lines changed

dist/fuse.basic.esm.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,10 @@ function norm(weight = 1, mantissa = 3) {
311311
}
312312

313313
class FuseIndex {
314-
constructor({ getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {
314+
constructor({
315+
getFn = Config.getFn,
316+
fieldNormWeight = Config.fieldNormWeight
317+
} = {}) {
315318
this.norm = norm(fieldNormWeight, 3);
316319
this.getFn = getFn;
317320
this.isCreated = false;
@@ -451,15 +454,22 @@ class FuseIndex {
451454
}
452455
}
453456

454-
function createIndex(keys, docs, { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {
457+
function createIndex(
458+
keys,
459+
docs,
460+
{ getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}
461+
) {
455462
const myIndex = new FuseIndex({ getFn, fieldNormWeight });
456463
myIndex.setKeys(keys.map(createKey));
457464
myIndex.setSources(docs);
458465
myIndex.create();
459466
return myIndex
460467
}
461468

462-
function parseIndex(data, { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {
469+
function parseIndex(
470+
data,
471+
{ getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}
472+
) {
463473
const { keys, records } = data;
464474
const myIndex = new FuseIndex({ getFn, fieldNormWeight });
465475
myIndex.setKeys(keys);

dist/fuse.common.js

+11-37
Original file line numberDiff line numberDiff line change
@@ -2059,47 +2059,21 @@ var Fuse$1 = /*#__PURE__*/function () {
20592059

20602060
return [];
20612061
}
2062-
/*eslint indent: [2, 2, {"SwitchCase": 1}]*/
20632062

2063+
var res = [];
20642064

2065-
switch (node.operator) {
2066-
case LogicalOperator.AND:
2067-
{
2068-
var res = [];
2065+
for (var i = 0, len = node.children.length; i < len; i += 1) {
2066+
var child = node.children[i];
2067+
var result = evaluate(child, item, idx);
20692068

2070-
for (var i = 0, len = node.children.length; i < len; i += 1) {
2071-
var child = node.children[i];
2072-
var result = evaluate(child, item, idx);
2073-
2074-
if (result.length) {
2075-
res.push.apply(res, _toConsumableArray(result));
2076-
} else {
2077-
return [];
2078-
}
2079-
}
2080-
2081-
return res;
2082-
}
2083-
2084-
case LogicalOperator.OR:
2085-
{
2086-
var _res = [];
2087-
2088-
for (var _i = 0, _len = node.children.length; _i < _len; _i += 1) {
2089-
var _child = node.children[_i];
2090-
2091-
var _result = evaluate(_child, item, idx);
2092-
2093-
if (_result.length) {
2094-
_res.push.apply(_res, _toConsumableArray(_result));
2095-
2096-
break;
2097-
}
2098-
}
2099-
2100-
return _res;
2101-
}
2069+
if (result.length) {
2070+
res.push.apply(res, _toConsumableArray(result));
2071+
} else if (node.operator === LogicalOperator.AND) {
2072+
return [];
2073+
}
21022074
}
2075+
2076+
return res;
21032077
};
21042078

21052079
var records = this._myIndex.records;

dist/fuse.esm.js

+22-29
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,10 @@ function norm(weight = 1, mantissa = 3) {
309309
}
310310

311311
class FuseIndex {
312-
constructor({ getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {
312+
constructor({
313+
getFn = Config.getFn,
314+
fieldNormWeight = Config.fieldNormWeight
315+
} = {}) {
313316
this.norm = norm(fieldNormWeight, 3);
314317
this.getFn = getFn;
315318
this.isCreated = false;
@@ -449,15 +452,22 @@ class FuseIndex {
449452
}
450453
}
451454

452-
function createIndex(keys, docs, { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {
455+
function createIndex(
456+
keys,
457+
docs,
458+
{ getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}
459+
) {
453460
const myIndex = new FuseIndex({ getFn, fieldNormWeight });
454461
myIndex.setKeys(keys.map(createKey));
455462
myIndex.setSources(docs);
456463
myIndex.create();
457464
return myIndex
458465
}
459466

460-
function parseIndex(data, { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {
467+
function parseIndex(
468+
data,
469+
{ getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}
470+
) {
461471
const { keys, records } = data;
462472
const myIndex = new FuseIndex({ getFn, fieldNormWeight });
463473
myIndex.setKeys(keys);
@@ -1641,34 +1651,17 @@ class Fuse {
16411651
return []
16421652
}
16431653

1644-
/*eslint indent: [2, 2, {"SwitchCase": 1}]*/
1645-
switch (node.operator) {
1646-
case LogicalOperator.AND: {
1647-
const res = [];
1648-
for (let i = 0, len = node.children.length; i < len; i += 1) {
1649-
const child = node.children[i];
1650-
const result = evaluate(child, item, idx);
1651-
if (result.length) {
1652-
res.push(...result);
1653-
} else {
1654-
return []
1655-
}
1656-
}
1657-
return res
1658-
}
1659-
case LogicalOperator.OR: {
1660-
const res = [];
1661-
for (let i = 0, len = node.children.length; i < len; i += 1) {
1662-
const child = node.children[i];
1663-
const result = evaluate(child, item, idx);
1664-
if (result.length) {
1665-
res.push(...result);
1666-
break
1667-
}
1668-
}
1669-
return res
1654+
const res = [];
1655+
for (let i = 0, len = node.children.length; i < len; i += 1) {
1656+
const child = node.children[i];
1657+
const result = evaluate(child, item, idx);
1658+
if (result.length) {
1659+
res.push(...result);
1660+
} else if (node.operator === LogicalOperator.AND) {
1661+
return []
16701662
}
16711663
}
1664+
return res
16721665
};
16731666

16741667
const records = this._myIndex.records;

0 commit comments

Comments
 (0)