Last active
August 28, 2020 14:49
-
-
Save mattip/75f97b4cbf639d892af47be49c468fe9 to your computer and use it in GitHub Desktop.
searching affiliate websites
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/sphinx/themes/basic/static/searchtools.js b/sphinx/themes/basic/static/searchtools.js | |
index 970d0d975..90fd3a0f6 100644 | |
--- a/sphinx/themes/basic/static/searchtools.js | |
+++ b/sphinx/themes/basic/static/searchtools.js | |
@@ -107,6 +107,13 @@ var Search = { | |
this._queued_query = query; | |
}, | |
+ setAffiliate : function(index) { | |
+ if (this._affiliates == null) { | |
+ this._affiliates = []; | |
+ } | |
+ this._affiliates.push(index); | |
+ }, | |
+ | |
stopPulse : function() { | |
this._pulse_status = 0; | |
}, | |
@@ -197,8 +205,7 @@ var Search = { | |
// console.info('excluded: ', excluded); | |
// prepare search | |
- var terms = this._index.terms; | |
- var titleterms = this._index.titleterms; | |
+ var rootUrl = DOCUMENTATION_OPTIONS.URL_ROOT; | |
// array of [filename, title, anchor, descr, score] | |
var results = []; | |
@@ -208,11 +215,18 @@ var Search = { | |
for (i = 0; i < objectterms.length; i++) { | |
var others = [].concat(objectterms.slice(0, i), | |
objectterms.slice(i+1, objectterms.length)); | |
- results = results.concat(this.performObjectSearch(objectterms[i], others)); | |
+ results = results.concat(this.performObjectSearch(objectterms[i], others, this._index, rootUrl)); | |
+ if (this._affiliates) { | |
+ for (j = 0; j < this._affiliates.length; j++) { | |
+ var index = this._affiliates[j]; | |
+ results = results.concat(this.performObjectSearch(objectterms[i], others, index, index.rootUrl)); | |
+ | |
+ } | |
+ } | |
} | |
// lookup as search terms in fulltext | |
- results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms)); | |
+ results = results.concat(this.performTermsSearch(searchterms, excluded, this._index, rootUrl)); | |
// let the scorer override scores with a custom scoring function | |
if (Scorer.score) { | |
@@ -250,7 +264,7 @@ var Search = { | |
var item = results.pop(); | |
var listItem = $('<li style="display:none"></li>'); | |
var requestUrl = ""; | |
+ var rootUrl = item[6] || DOCUMENTATION_OPTIONS.URL_ROOT; | |
if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') { | |
// dirhtml builder | |
var dirname = item[0] + '/'; | |
@@ -259,16 +273,14 @@ var Search = { | |
} else if (dirname == 'index/') { | |
dirname = ''; | |
} | |
- requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname; | |
+ requestUrl = rootUrl + dirname; | |
linkUrl = requestUrl; | |
} else { | |
// normal html builders | |
- requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX; | |
+ requestUrl = rootUrl + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX; | |
linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX; | |
} | |
listItem.append($('<a/>').attr('href', | |
linkUrl + | |
highlightstring + item[2]).html(item[1])); | |
if (item[3]) { | |
listItem.append($('<span> (' + item[3] + ')</span>')); | |
@@ -314,12 +326,12 @@ var Search = { | |
/** | |
* search for object names | |
*/ | |
- performObjectSearch : function(object, otherterms) { | |
- var filenames = this._index.filenames; | |
- var docnames = this._index.docnames; | |
- var objects = this._index.objects; | |
- var objnames = this._index.objnames; | |
- var titles = this._index.titles; | |
+ performObjectSearch : function(object, otherterms, index, rootUrl) { | |
+ var filenames = index.filenames; | |
+ var docnames = index.docnames; | |
+ var objects = index.objects; | |
+ var objnames = index.objnames; | |
+ var titles = index.titles; | |
var i; | |
var results = []; | |
@@ -371,7 +383,7 @@ var Search = { | |
} else { | |
score += Scorer.objPrioDefault; | |
} | |
- results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]); | |
+ results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]], rootUrl]); | |
} | |
} | |
} | |
@@ -382,10 +394,12 @@ var Search = { | |
/** | |
* search for full-text terms in the index | |
*/ | |
- performTermsSearch : function(searchterms, excluded, terms, titleterms) { | |
- var docnames = this._index.docnames; | |
- var filenames = this._index.filenames; | |
- var titles = this._index.titles; | |
+ performTermsSearch : function(searchterms, excluded, index, rootUrl) { | |
+ var terms = index.terms; | |
+ var titleterms = index.titleterms; | |
+ var docnames = index.docnames; | |
+ var filenames = index.filenames; | |
+ var titles = index.titles; | |
var i, j, file; | |
var fileMap = {}; | |
@@ -475,7 +489,7 @@ var Search = { | |
// select one (max) score for the file. | |
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf... | |
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]})); | |
- results.push([docnames[file], titles[file], '', null, score, filenames[file]]); | |
+ results.push([docnames[file], titles[file], '', null, score, filenames[file], rootUrl]); | |
} | |
} | |
return results; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment