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: Better sorting criteria for searching. #13514

Closed

Conversation

lifthrasiir
Copy link
Contributor

This essentially rewrites the sorting algorithm, which relied on the implementation-defined handling of non-consistent sorting function (cf. ECMA-262 5th edition, section 15.4.4.11) and was also a bit inefficient (in retrospect, it depends, and we already limit the # of results anyway) and wasn't doing what it was supposed to do sometimes.

The new criteria expands the prior criteria while adding these ones:


Example with the query repr:

  • std::repr (exact match, module first)
  • std::raw::Repr (struct/trait first)
  • std::repr::Repr
  • std::raw::Repr::repr (type method later)
  • std::repr::write_repr (no desc)
  • std::repr::Repr::write_repr (no desc)
  • std::repr::repr_to_str (no desc)
  • std::repr::ReprVisitor (no desc)
  • std::repr::ReprVisitor (no desc)
  • std::repr::ReprVisitor::write_unboxed_vec_repr (no desc)
  • rustc::middle::trans::adt::Repr (exact match not in the current crate)
  • rustc::util::ppaux::Repr
  • rustc::util::ppaux::Repr::repr
  • ...

Example with the query fm:

  • std::fmt (prefix match, module first)
  • std::fmt::Show::fmt (type method first)
  • std::io::process::ProcessExit::fmt (normal method later, but has desc, thus prefered over others)
  • std::ascii::Ascii::fmt (no desc)
  • std::cell::Cell::fmt (no desc)
  • std::cmp::Ordering::fmt (no desc)
  • ...
  • std::fmt::RadixFmt (later occurence of the query in the name)
  • std::rt::unwind::begin_unwind_fmt
  • ...

This essentially rewrites the sorting algorithm, which relied on
the implementation-defined handling of non-consistent sorting function
(cf. ECMA-262 5th edition, section 15.4.4.11)
and was also a bit inefficient.

The new criteria expands the prior criteria while adding these ones:

- The current crate is always preferred over other crates.
  (Closes rust-lang#13178)
- An item with a description is preferred over one without it,
  if item names match. This is a heuristic assuming that
  the documented item is more likely to be relevant.
- An item with no literal occurrence of search query is handled correctly.
@brson
Copy link
Contributor

brson commented Apr 14, 2014

❤️

alexcrichton added a commit to alexcrichton/rust that referenced this pull request Apr 16, 2014
Closes rust-lang#13546 (workcache: Don't assume gcc exists on all platforms)
Closes rust-lang#13545 (std: Remove pub use globs)
Closes rust-lang#13530 (test: Un-ignore smallest-hello-world.rs)
Closes rust-lang#13529 (std: Un-ignore some float tests on windows)
Closes rust-lang#13528 (green: Add a helper macro for booting libgreen)
Closes rust-lang#13526 (Remove RUST_LOG="::help" from the docs)
Closes rust-lang#13524 (dist: Make Windows installer uninstall first. Closes rust-lang#9563)
Closes rust-lang#13521 (Change AUTHORS section in the man pages)
Closes rust-lang#13519 (Update GitHub's Rust projects page.)
Closes rust-lang#13518 (mk: Change windows to install from stage2)
Closes rust-lang#13516 (liburl doc: insert missing hyphen)
Closes rust-lang#13514 (rustdoc: Better sorting criteria for searching.)
Closes rust-lang#13512 (native: Fix a race in select())
Closes rust-lang#13506 (Use the unsigned integer types for bitwise intrinsics.)
Closes rust-lang#13502 (Add a default impl for Set::is_superset)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Rustdoc cross-crate search should list items from the current crate first
3 participants