@@ -541,15 +541,13 @@ class PackageNameIndex {
541541
542542 PackageNameIndex (this ._packageNames) {
543543 _data = _packageNames.map ((package) {
544- final collapsed = _collapseName (package);
545- return _PkgNameData (collapsed, trigrams (collapsed).toSet ());
544+ final lowercased = package.toLowerCase ();
545+ final collapsed = _removeUnderscores (lowercased);
546+ return _PkgNameData (lowercased, collapsed, trigrams (collapsed).toSet ());
546547 }).toList ();
547548 }
548549
549- /// Maps package name to a reduced form of the name:
550- /// the same character parts, but without `-` .
551- String _collapseName (String package) =>
552- package.replaceAll ('_' , '' ).toLowerCase ();
550+ String _removeUnderscores (String text) => text.replaceAll ('_' , '' );
553551
554552 /// Search [text] and return the matching packages with scores.
555553 @visibleForTesting
@@ -581,7 +579,8 @@ class PackageNameIndex {
581579 final singularWord = word.length <= 3 || ! word.endsWith ('s' )
582580 ? word
583581 : word.substring (0 , word.length - 1 );
584- final collapsedWord = _collapseName (singularWord);
582+ final lowercasedWord = singularWord.toLowerCase ();
583+ final collapsedWord = _removeUnderscores (lowercasedWord);
585584 final parts =
586585 collapsedWord.length <= 3 ? [collapsedWord] : trigrams (collapsedWord);
587586 for (var i = 0 ; i < _data.length; i++ ) {
@@ -590,8 +589,16 @@ class PackageNameIndex {
590589 }
591590
592591 final entry = _data[i];
593- if (entry.collapsed.contains (collapsedWord)) {
594- score.setValue (i, 1.0 );
592+ if (entry.collapsed.length >= collapsedWord.length &&
593+ entry.collapsed.contains (collapsedWord)) {
594+ // also check for non-collapsed match
595+ if (entry.lowercased.length >= lowercasedWord.length &&
596+ entry.lowercased.contains (lowercasedWord)) {
597+ score.setValue (i, 1.0 );
598+ continue ;
599+ }
600+
601+ score.setValue (i, 0.99 );
595602 continue ;
596603 }
597604 var matched = 0 ;
@@ -622,10 +629,11 @@ class PackageNameIndex {
622629}
623630
624631class _PkgNameData {
632+ final String lowercased;
625633 final String collapsed;
626634 final Set <String > trigrams;
627635
628- _PkgNameData (this .collapsed, this .trigrams);
636+ _PkgNameData (this .lowercased, this . collapsed, this .trigrams);
629637}
630638
631639extension on List <IndexedPackageHit > {
0 commit comments