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: use restricted Damerau-Levenshtein distance for search #109009

Merged
merged 2 commits into from
Mar 12, 2023

Conversation

notriddle
Copy link
Contributor

Based on #108200, for the same rationale.

This replaces the existing Levenshtein algorithm with the Damerau-Levenshtein algorithm. This means that "ab" to "ba" is one change (a transposition) instead of two (a deletion and insertion). More specifically, this is a restricted implementation, in that "ca" to "abc" cannot be performed as "ca" → "ac" → "abc", as there is an insertion in the middle of a transposition. I believe that errors like that are sufficiently rare that it's not worth taking into account.

Before this change, searching prinltn! listed print! first, followed by println!. With this change, println! matches more closely.

@rustbot
Copy link
Collaborator

rustbot commented Mar 11, 2023

r? @jsha

(rustbot has picked a reviewer for you, use r? to override)

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. labels Mar 11, 2023
@rustbot
Copy link
Collaborator

rustbot commented Mar 11, 2023

Some changes occurred in HTML/CSS/JS.

cc @GuillaumeGomez, @Folyd, @jsha

@notriddle notriddle force-pushed the notriddle/edit-distance branch 2 times, most recently from 90381ba to a60de8f Compare March 11, 2023 01:54
Based on rust-lang#108200, for the same
rationale.

> This replaces the existing Levenshtein algorithm with the
> Damerau-Levenshtein algorithm. This means that "ab" to "ba" is one change
> (a transposition) instead of two (a deletion and insertion). More
> specifically, this is a restricted implementation, in that "ca" to "abc"
> cannot be performed as "ca" → "ac" → "abc", as there is an insertion in the
> middle of a transposition. I believe that errors like that are sufficiently
> rare that it's not worth taking into account.

Before this change, searching `prinltn!` listed `print!` first, followed
by `println!`. With this change, `println!` matches more closely.
@notriddle notriddle added the A-rustdoc-search Area: Rustdoc's search feature label Mar 11, 2023
@GuillaumeGomez
Copy link
Member

It's a great improvement and putting it into one place really improves the reading. Thanks!

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Mar 12, 2023

📌 Commit ce795d9 has been approved by GuillaumeGomez

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 12, 2023
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 12, 2023
…iaskrgr

Rollup of 8 pull requests

Successful merges:

 - rust-lang#108651 (Forbid the use of `#[target_feature]` on `main`)
 - rust-lang#109009 (rustdoc: use restricted Damerau-Levenshtein distance for search)
 - rust-lang#109026 (Introduce `Rc::into_inner`, as a parallel to `Arc::into_inner`)
 - rust-lang#109029 (Gate usages of `dyn*` and const closures in macros)
 - rust-lang#109031 (Rename `config.toml.example` to `config.example.toml`)
 - rust-lang#109032 (Use `TyCtxt::trait_solver_next` in some places)
 - rust-lang#109047 (typo)
 - rust-lang#109052 (Add eslint check for rustdoc-gui tester)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit afe2575 into rust-lang:master Mar 12, 2023
@rustbot rustbot added this to the 1.70.0 milestone Mar 12, 2023
@notriddle notriddle deleted the notriddle/edit-distance branch March 12, 2023 23:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-rustdoc-search Area: Rustdoc's search feature S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants