diff options
Diffstat (limited to 'web/server/h2o/libh2o/misc/oktavia/src/search-result.jsx')
-rw-r--r-- | web/server/h2o/libh2o/misc/oktavia/src/search-result.jsx | 287 |
1 files changed, 0 insertions, 287 deletions
diff --git a/web/server/h2o/libh2o/misc/oktavia/src/search-result.jsx b/web/server/h2o/libh2o/misc/oktavia/src/search-result.jsx deleted file mode 100644 index fb9721fa1..000000000 --- a/web/server/h2o/libh2o/misc/oktavia/src/search-result.jsx +++ /dev/null @@ -1,287 +0,0 @@ -import "oktavia.jsx"; - -class Proposal -{ - var omit : int; - var expect : int; - function constructor (omit : int, expect : int) - { - this.omit = omit; - this.expect = expect; - } -} - -class Position -{ - var word : string; - var position : int; - var stemmed : boolean; - function constructor (word : string, position : int, stemmed : boolean) - { - this.word = word; - this.position = position; - this.stemmed = stemmed; - } -} - -class SearchUnit -{ - var positions : Map.<Position>; - var id : int; - var _size : int; - var score : int; - var startPosition : int; - - function constructor (id : int) - { - this.positions = {} : Map.<Position>; - this.id = id; - this._size = 0; - this.score = 0; - this.startPosition = -1; - } - - function addPosition (word : string, position : int, stemmed : boolean) : void - { - var positionObj = this.positions[position as string]; - if (!positionObj) - { - this._size++; - this.positions[position as string] = new Position(word, position, stemmed); - } - else - { - if (positionObj.word.length < word.length) - { - positionObj.word = word; - } - positionObj.stemmed = positionObj.stemmed && stemmed; - } - } - - function get (position : int) : Nullable.<Position> - { - return this.positions[position as string]; - } - - function size () : int - { - return this._size; - } - - function merge (rhs : SearchUnit) : void - { - for (var position in rhs.positions) - { - var pos = rhs.positions[position]; - this.addPosition(pos.word, pos.position, pos.stemmed); - } - } - - function getPositions () : Position[] - { - var result = [] : Position[]; - for (var pos in this.positions) - { - result.push(this.positions[pos]); - } - result.sort((a : Position, b : Position) -> ((a.position - b.position) as number)); - return result; - } -} - -class SingleResult -{ - var units : SearchUnit[]; - var unitIds : int[]; - var or : boolean; - var not : boolean; - var searchWord : string; - - function constructor () - { - this.units = [] : SearchUnit[]; - this.unitIds = [] : int[]; - this.or = false; - this.not = false; - this.searchWord = ''; - } - - function constructor (searchWord : string, or : boolean, not : boolean) - { - this.units = [] : SearchUnit[]; - this.unitIds = [] : int[]; - this.or = or; - this.not = not; - this.searchWord = searchWord; - } - - function getSearchUnit (unitId : int) : SearchUnit - { - var existing = this.unitIds.indexOf(unitId); - var result : SearchUnit; - if (existing == -1) - { - result = new SearchUnit(unitId); - this.units.push(result); - this.unitIds.push(unitId); - } - else - { - result = this.units[existing]; - } - return result; - } - - function merge (rhs : SingleResult) : SingleResult - { - var result = new SingleResult(); - if (rhs.or) - { - this._orMerge(result, rhs); - } - else if (rhs.not) - { - this._notMerge(result, rhs); - } - else - { - this._andMerge(result, rhs); - } - return result; - } - - function size () : int - { - return this.units.length; - } - - function _andMerge (result : SingleResult, rhs : SingleResult) : void - { - for (var i = 0; i < this.unitIds.length; i++) - { - var id = this.unitIds[i]; - if (rhs.unitIds.indexOf(id) != -1) - { - var lhsSection = this.units[i]; - result.unitIds.push(id); - result.units.push(lhsSection); - } - } - } - - function _orMerge (result : SingleResult, rhs : SingleResult) : void - { - result.unitIds = this.unitIds.slice(0, this.unitIds.length); - result.units = this.units.slice(0, this.units.length); - - for (var i = 0; i < rhs.unitIds.length; i++) - { - var id = rhs.unitIds[i]; - var rhsSection = rhs.units[i]; - if (result.unitIds.indexOf(id) != -1) - { - var lhsSection = result.units[result.unitIds.indexOf(id)]; - lhsSection.merge(rhsSection); - } - else - { - result.unitIds.push(id); - result.units.push(rhsSection); - } - } - } - - function _notMerge (result : SingleResult, rhs : SingleResult) : void - { - for (var i = 0; i < this.unitIds.length; i++) - { - var id = this.unitIds[i]; - if (rhs.unitIds.indexOf(id) == -1) - { - var lhsSection = this.units[i]; - result.unitIds.push(id); - result.units.push(lhsSection); - } - } - } -} - -class SearchSummary -{ - var sourceResults : SingleResult[]; - var result : Nullable.<SingleResult>; - var oktavia : Nullable.<Oktavia>; - - function constructor() - { - this.sourceResults = [] : SingleResult[]; - this.result = null; - this.oktavia = null; - } - - function constructor (oktavia : Oktavia) - { - this.sourceResults = [] : SingleResult[]; - this.result = null; - this.oktavia = oktavia; - } - - function addQuery(result : SingleResult) : void - { - this.sourceResults.push(result); - } - - function mergeResult () : void - { - this.result = this.mergeResult(this.sourceResults); - } - - function mergeResult (results : SingleResult[]) : SingleResult - { - var rhs = results[0]; - for (var i = 1; i < results.length; i++) - { - rhs = rhs.merge(results[i]); - } - return rhs; - } - - function getProposal () : Proposal[] - { - var proposals = [] : Proposal[]; - for (var i = 0; i < this.sourceResults.length; i++) - { - var tmpSource = [] : SingleResult[]; - for (var j = 0; j < this.sourceResults.length; j++) - { - if (i != j) - { - tmpSource.push(this.sourceResults[j]); - } - } - var result = this.mergeResult(tmpSource); - proposals.push(new Proposal(i, result.size())); - } - proposals.sort((a : Proposal, b : Proposal) -> ((b.expect - a.expect) as number)); - return proposals; - } - - function getSortedResult () : SearchUnit[] - { - var result = this.result.units.slice(0, this.result.units.length); - result.sort((a : SearchUnit, b : SearchUnit) -> ((b.score - a.score) as number)); - return result; - } - - function size () : int - { - return this.result.size(); - } - - function add (result : SingleResult) : void - { - this.sourceResults.push(result); - } -} - |