autocompletion/commit
serve a mix of tokenized prefix and pure prefix results. NOTE: this breaks the offset option
author | Jacco van Ossenbruggen |
---|---|
Fri Aug 22 12:05:04 2014 +0200 | |
committer | Jacco van Ossenbruggen |
Fri Aug 22 12:05:04 2014 +0200 | |
commit | 6210956ec801b268e3173ef552160b36e8fb4cde |
tree | d5fa8ad6ed1c674e0cab2c52d90c66ee81a6f438 |
parent | b445077f71c748ac852c25b4bb42e16c40de9b78 |
Diff style: patch stat
diff --git a/api/autocomplete_api.pl b/api/autocomplete_api.pl index 50d0163..3b557c0 100644 --- a/api/autocomplete_api.pl +++ b/api/autocomplete_api.pl @@ -21,8 +21,15 @@ http_autocomplete(Request) :- []), limit(Limit, [default(10)]), + /* FIX ME offset(Offset, [default(0)]), + */ + tokenized(Tokenized, + [ float, + default(0.5), + description('Ratio of tokenized versus pure prefix search results') + ]), method(Method, [one_of([prefix,stem,exact]), default(prefix), @@ -42,10 +49,20 @@ http_autocomplete(Request) :- Options = [match(Method), filter(Filter), property(LabelRankingList)], - instance_search(Query, Hits0, Options), - length(Hits0, TotalNumberOfResults), - list_offset(Hits0, Offset, Hits1), - list_limit(Hits1, Limit, Hits2, _), + instance_search(Query, HitsPrefix, [tokenize(false) | Options]), + instance_search(Query, HitsTokenized, [tokenize(true) | Options]), + length(HitsPrefix, NrHitsPrefix), + length(HitsTokenized, NrHitsTokenized), + TotalNumberOfResults is NrHitsPrefix + NrHitsTokenized, + + FirstHalf is min(floor(Limit/(1 -Tokenized)), NrHitsPrefix), + SecondHalf is Limit - FirstHalf, + + % list_offset(Hits0, Offset, Hits1), + + list_limit(HitsPrefix, FirstHalf, PrefixHits, _), + list_limit(HitsTokenized, SecondHalf,TokenizedHits, _), + append([PrefixHits, TokenizedHits], Hits2), maplist(ac_expand_hit, Hits2,Hits), reply_json(json{totalNumberOfResults:TotalNumberOfResults, results:Hits}).