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

Improve relevance scoring for titles and object-name matches in search results #12441

Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
fbb62cf
Boost title-matching scores if main title
wlach May 25, 2024
96e2894
[search] Add fixture data for use with title relevance test cases.
jayaddison Jun 18, 2024
a2a4b60
[search] tests: add test coverage for title-related relevance scoring.
jayaddison Jun 19, 2024
cb0f6e7
[search] regenerate JS fixture root titles searchindex from fresh/cle…
jayaddison Jun 19, 2024
75eaf81
Merge branch 'master' into issue-12391/subtitle-search-scoring-adjust…
jayaddison Jun 23, 2024
0f0624e
Merge branch 'boost-scores-if-main-title' into issue-12391/subtitle-s…
jayaddison Jun 24, 2024
5eaea64
[search] Refactor scoring logic adjustment:
jayaddison Jun 24, 2024
afb1685
Add CHANGES.rst entry.
jayaddison Jun 24, 2024
5a5e271
Fixup: add missing credit to CHANGES.rst
jayaddison Jun 24, 2024
5c106c8
Merge branch 'master' into issue-12391/subtitle-search-scoring-adjust…
jayaddison Jun 24, 2024
7418a71
Fixup: use intended operator precedence.
jayaddison Jun 24, 2024
17367eb
Revert "Fixup: use intended operator precedence."
jayaddison Jun 25, 2024
96526a9
Revert "[search] Refactor scoring logic adjustment:"
jayaddison Jun 25, 2024
6c3ffa2
[search] Refactor scoring logic adjustments (second attempt/suggestion)
jayaddison Jun 25, 2024
fd36010
Fixup: adjust test search result score expectation.
jayaddison Jun 25, 2024
c259b1c
Merge branch 'master' into issue-12391/subtitle-search-scoring-adjust…
jayaddison Jul 6, 2024
7f8a5f6
Merge branch 'master' into issue-12391/subtitle-search-scoring-adjust…
jayaddison Jul 8, 2024
2f0cbe1
Tests: refactor checkRanking function to use JavaScript array-unpacking.
jayaddison Jul 8, 2024
bf576cd
Tests: refactor checkRanking function to use JavaScript ``for...of`` …
jayaddison Jul 8, 2024
d1a7197
Tests: add early-exit path to checkRanking function.
jayaddison Jul 8, 2024
5d5b079
Tests: extract two distinct relevance-related test cases from existin…
jayaddison Jul 8, 2024
e9bdf2f
Tests: nitpick: reverse the ``results`` array instead of reversing th…
jayaddison Jul 8, 2024
e75891e
Regenerate JS test search fixtures using ``utils/generate_js_fixtures…
jayaddison Jul 8, 2024
d5d8717
Tests: update expectations since main titles now have empty anchor ta…
jayaddison Jul 8, 2024
388aef3
Code review: apply phrasing/typo-fixup suggestions.
jayaddison Jul 9, 2024
4d819cc
Value-safety: use ``const`` for scoring variables.
jayaddison Jul 9, 2024
9d59eaf
Tests: self-documentation: add comment to describe the purpose of the…
jayaddison Jul 9, 2024
7b772a2
Code review feedback: add class-level attribute with same name as a (…
jayaddison Jul 9, 2024
4e07078
Tests: split object-vs-title matching into two distinct rules.
jayaddison Jul 10, 2024
1b42e80
Merge branch 'master' into issue-12391/subtitle-search-scoring-adjust…
jayaddison Jul 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions sphinx/themes/basic/static/searchtools.js
Original file line number Diff line number Diff line change
Expand Up @@ -328,10 +328,14 @@ const Search = {
for (const [title, foundTitles] of Object.entries(allTitles)) {
if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
for (const [file, id] of foundTitles) {
let score = Math.round(100 * queryLower.length / title.length)
let isMainTitle = titles[file] === title
// score these a little bit above document matches, with more of a boost
// for main document titles
let baseScore = Scorer.title + (isMainTitle ? 2 : 1)
let score = Math.round(baseScore * queryLower.length / title.length)
normalResults.push([
docNames[file],
titles[file] !== title ? `${titles[file]} > ${title}` : title,
isMainTitle ? title : `${titles[file]} > ${title}`,
id !== null ? "#" + id : "",
null,
score,
Expand Down
2 changes: 1 addition & 1 deletion tests/js/searchtools.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ describe('Basic html theme search', function() {
'Main Page',
'#main-page',
null,
100,
17,
'index.rst'
]
];
Expand Down