Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rustdoc-search: count path edits with separate edit limit #119331

Merged
merged 1 commit into from
Dec 28, 2023

Commits on Dec 27, 2023

  1. rustdoc-search: count path edits with separate edit limit

    Since the two are counted separately elsewhere, they should get
    their own limits, too. The biggest problem with combining them
    is that paths are loosely checked by not requiring every component
    to match, which means that if they are short and matched loosely,
    they can easily find "drunk typist" matches that make no sense,
    like this old result:
    
        std::collections::btree_map::itermut matching slice::itermut
        maxEditDistance = ("slice::itermut".length) / 3 = 14 / 3 = 4
        editDistance("std", "slice") = 4
        editDistance("itermut", "itermut") = 0
            4 + 0 <= 4 PASS
    
    Of course, `slice::itermut` should not match stuff from btreemap.
    `slice` should not match `std`.
    
    The new result counts them separately:
    
        maxPathEditDistance = "slice".length / 3 = 5 / 3 = 1
        maxEditDistance = "itermut".length / 3 = 7 / 3 = 2
        editDistance("std", "slice") = 4
            4 <= 1 FAIL
    
    Effectively, this makes path queries less "typo-resistant".
    It's not zero, but it means `vec` won't match the `v1` prelude.
    
    Queries without parent paths are unchanged.
    notriddle committed Dec 27, 2023
    Configuration menu
    Copy the full SHA
    0ea58e2 View commit details
    Browse the repository at this point in the history