fix duplicate definition issue
This commit is contained in:
1 parent
1c28c22fb5
commit
d4c65ce06f
1 file changed
+30
-6
+30
-6
@@ -896,6 +896,29 @@ function sort_results(text, results)
|
||||
return results;
|
||||
}
|
||||
|
||||
function skip_rereferenced_entries(results)
|
||||
{
|
||||
let newresults = [];
|
||||
let seenseq = new Set();
|
||||
|
||||
console.log(results);
|
||||
for(let lookup of results)
|
||||
{
|
||||
let newlookup = [];
|
||||
console.log(lookup);
|
||||
for(let entry of lookup.result)
|
||||
{
|
||||
if(seenseq.has(entry.seq))
|
||||
continue;
|
||||
seenseq.add(entry.seq);
|
||||
newlookup.push(entry);
|
||||
}
|
||||
if(newlookup.length > 0)
|
||||
newresults.push({text:lookup.text, result:newlookup});
|
||||
}
|
||||
return newresults;
|
||||
}
|
||||
|
||||
let last_lookup = "";
|
||||
let last_time_lookup = Date.now();
|
||||
function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alternatives)
|
||||
@@ -913,6 +936,7 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
||||
// deconjugate() returns possible deconjugations, one of which has zero deconjugations, i.e. the plain text
|
||||
// build_lookup_comb looks for dictionary definitions matching any deconjugation, returning a list of them
|
||||
//console.log("trying to look up " + text);
|
||||
// FIXME: later lookups using definitions already caught
|
||||
if(alternatives_mode == 0 || alternatives_mode == 1 || alternatives_mode == 2)
|
||||
{
|
||||
let forms = deconjugate(text);
|
||||
@@ -930,7 +954,7 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
||||
//console.log(text)
|
||||
result = sort_results(text, result);
|
||||
if(alternatives_mode == 0 || text.length <= 1)
|
||||
return {text:text, result:result};
|
||||
return skip_rereferenced_entries([{text:text, result:result}]);
|
||||
else if(alternatives_mode == 1) // second longest too
|
||||
{
|
||||
let len = text.length-1;
|
||||
@@ -950,10 +974,10 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
||||
if(short_result !== undefined && short_result.length > 0)
|
||||
{
|
||||
short_result = sort_results(short_text, short_result);
|
||||
return [{text:text, result:result}, {text:short_text, result:short_result}];
|
||||
return skip_rereferenced_entries([{text:text, result:result}, {text:short_text, result:short_result}]);
|
||||
}
|
||||
else
|
||||
return {text:text, result:result};
|
||||
return skip_rereferenced_entries([{text:text, result:result}]);
|
||||
}
|
||||
else if(alternatives_mode == 2) // shortest too
|
||||
{
|
||||
@@ -974,10 +998,10 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
||||
if(short_result !== undefined && short_result.length > 0)
|
||||
{
|
||||
short_result = sort_results(short_text, short_result);
|
||||
return [{text:text, result:result}, {text:short_text, result:short_result}];
|
||||
return skip_rereferenced_entries([{text:text, result:result}, {text:short_text, result:short_result}]);
|
||||
}
|
||||
else
|
||||
return {text:text, result:result};
|
||||
return skip_rereferenced_entries([{text:text, result:result}]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1004,7 +1028,7 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
||||
}
|
||||
//console.log(results);
|
||||
if(results.length > 0)
|
||||
return results;
|
||||
return skip_rereferenced_entries(results);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user