Commit 9351882
fix(search): inverse patterns now work correctly across multiple keys
ExtendedSearch.searchIn now sets hasInverse on the result when inverse
matchers (!term, !^prefix, !suffix$) are involved. _searchObjectList
uses this to switch from "ANY key matches" to "ALL keys must match"
aggregation, so !Syrup correctly excludes items containing Syrup in
any searched field.
For mixed patterns like "^hello !Syrup", a key failure conservatively
excludes the item — strictly better than the old behavior of including
items that should have been excluded.
Closes #712
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent 69a34d4 commit 9351882
17 files changed
Lines changed: 344 additions & 231 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1405 | 1405 | | |
1406 | 1406 | | |
1407 | 1407 | | |
1408 | | - | |
1409 | | - | |
1410 | | - | |
1411 | | - | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
1412 | 1411 | | |
1413 | | - | |
1414 | | - | |
1415 | | - | |
1416 | | - | |
1417 | | - | |
1418 | | - | |
1419 | | - | |
1420 | | - | |
1421 | | - | |
1422 | | - | |
1423 | | - | |
1424 | | - | |
1425 | | - | |
1426 | | - | |
1427 | | - | |
1428 | | - | |
1429 | | - | |
1430 | | - | |
1431 | | - | |
1432 | | - | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
1433 | 1416 | | |
1434 | 1417 | | |
1435 | 1418 | | |
| |||
1451 | 1434 | | |
1452 | 1435 | | |
1453 | 1436 | | |
| 1437 | + | |
| 1438 | + | |
1454 | 1439 | | |
1455 | 1440 | | |
1456 | 1441 | | |
1457 | | - | |
| 1442 | + | |
1458 | 1443 | | |
1459 | 1444 | | |
1460 | 1445 | | |
1461 | | - | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
1462 | 1455 | | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
1463 | 1461 | | |
1464 | 1462 | | |
1465 | 1463 | | |
| |||
1501 | 1499 | | |
1502 | 1500 | | |
1503 | 1501 | | |
1504 | | - | |
| 1502 | + | |
| 1503 | + | |
1505 | 1504 | | |
1506 | 1505 | | |
1507 | 1506 | | |
1508 | 1507 | | |
1509 | 1508 | | |
1510 | 1509 | | |
1511 | 1510 | | |
1512 | | - | |
| 1511 | + | |
| 1512 | + | |
1513 | 1513 | | |
1514 | 1514 | | |
1515 | 1515 | | |
| |||
1519 | 1519 | | |
1520 | 1520 | | |
1521 | 1521 | | |
1522 | | - | |
| 1522 | + | |
| 1523 | + | |
1523 | 1524 | | |
1524 | 1525 | | |
1525 | 1526 | | |
1526 | 1527 | | |
1527 | 1528 | | |
1528 | 1529 | | |
1529 | | - | |
| 1530 | + | |
| 1531 | + | |
1530 | 1532 | | |
1531 | 1533 | | |
1532 | 1534 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1409 | 1409 | | |
1410 | 1410 | | |
1411 | 1411 | | |
1412 | | - | |
1413 | | - | |
1414 | | - | |
1415 | | - | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
1416 | 1415 | | |
1417 | | - | |
1418 | | - | |
1419 | | - | |
1420 | | - | |
1421 | | - | |
1422 | | - | |
1423 | | - | |
1424 | | - | |
1425 | | - | |
1426 | | - | |
1427 | | - | |
1428 | | - | |
1429 | | - | |
1430 | | - | |
1431 | | - | |
1432 | | - | |
1433 | | - | |
1434 | | - | |
1435 | | - | |
1436 | | - | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
1437 | 1420 | | |
1438 | 1421 | | |
1439 | 1422 | | |
| |||
1455 | 1438 | | |
1456 | 1439 | | |
1457 | 1440 | | |
| 1441 | + | |
| 1442 | + | |
1458 | 1443 | | |
1459 | 1444 | | |
1460 | 1445 | | |
1461 | | - | |
| 1446 | + | |
1462 | 1447 | | |
1463 | 1448 | | |
1464 | 1449 | | |
1465 | | - | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
1466 | 1459 | | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
1467 | 1465 | | |
1468 | 1466 | | |
1469 | 1467 | | |
| |||
1505 | 1503 | | |
1506 | 1504 | | |
1507 | 1505 | | |
1508 | | - | |
| 1506 | + | |
| 1507 | + | |
1509 | 1508 | | |
1510 | 1509 | | |
1511 | 1510 | | |
1512 | 1511 | | |
1513 | 1512 | | |
1514 | 1513 | | |
1515 | 1514 | | |
1516 | | - | |
| 1515 | + | |
| 1516 | + | |
1517 | 1517 | | |
1518 | 1518 | | |
1519 | 1519 | | |
| |||
1523 | 1523 | | |
1524 | 1524 | | |
1525 | 1525 | | |
1526 | | - | |
| 1526 | + | |
| 1527 | + | |
1527 | 1528 | | |
1528 | 1529 | | |
1529 | 1530 | | |
1530 | 1531 | | |
1531 | 1532 | | |
1532 | 1533 | | |
1533 | | - | |
| 1534 | + | |
| 1535 | + | |
1534 | 1536 | | |
1535 | 1537 | | |
1536 | 1538 | | |
| |||
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments