MaskRay added inline comments.

================
Comment at: clangd/FuzzyMatch.cpp:96
     return None;
   return ScoreScale * std::min(PerfectBonus * PatN, std::max<int>(0, Best));
 }
----------------
sammccall wrote:
> MaskRay wrote:
> > I also don't understand why it clamps the value to zero here. Negative 
> > values are also meaningful to me. Given that perfectBonus is only 3 it is 
> > very easy to get a negative value here.
> An important part of the contract of `match()` is that it returns a value in 
> `[0,1]`.
> We rely on this range to combine this with other scoring signals - we 
> multiply this by a quality signal in code completion.
> (Currently the quality signal is just derived from Sema, but the global index 
> will provide the number of uses).
> 
> It would be possible to use a different squash function here, but I found 
> max(kFloor,x) worked well for the examples I looked at - anything <= some 
> floor value was "not really a useful match at all", and most of the variance 
> below the floor seemed to be noise to me.
> (Then I tuned the bonuses/penalties so the floor was at zero)
We could try other criteria in the future. I believe the current one can be 
improved because negative scores may be returned but the scoring shouldn't 
return 0 for all the cases.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D44720



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to