[IIAB] autocompletion search
Joel Steres
joel.steres at ymobility.com
Sat Mar 16 04:42:26 PDT 2013
Hi Braddock,
I haven't had a chance to do testing with a smartphone.
I updated the autocomplete to sort titles based on downloads. (Rebuild
with gutenberg_build.sh required.) It was a good suggestion. While
titles are sorted, creators and contributors are not. I suppose we
could compute a total download count for each author with a clever sql
query, but I haven't done that yet. This still leaves the question of
whether to interleave title/creator/contributor or leave them
clustered. I am still handling the autocomplete on the client.
Performance improved locally after I made some changes to the includes
a while back. I need to reevaluate the performance running from zhen
and on mobile devices.
I also fixed the title sorting so that ordering is not affected by
punctuation and case (at least for English words).
I noticed that some book entries remain for audio books that have no
audio files available (excluded) but were not removed because the
audio book has a text readme or two that kept me from deleting the
entry.
Finally, I'll be out of town until Thursday.
Best,
Joel
On Fri, Mar 15, 2013 at 3:37 PM, Braddock <braddock at braddock.com> wrote:
> Hi Joel,
> The Gutenberg search site looks great!
>
> Does it work on smartphones? (haven't tried it yet)
>
> I think you can greatly enhance your autocomplete and search result rankings
> by using the pgterms:downloads counter in the catalog as a popularity
> measure. By eyeball, it looks like a pretty reliable indicator.
>
> Obviously the autocomplete needs to be done server-side. I have server-side
> autocomplete jqueryUI/Flask/python code snippets below if they are helpful.
> Basically you just return a JSON list. See the jquery UI autocomplete demo
> for the javascript side - it isn't hard to set up.
>
> thanks,
> braddock
>
>
> @blueprint.route('wikititles_autocomplete')
> def wikititles_autocomplete_view():
> partial = request.args.get('term')
> p = wikititles_mongo.autocomplete(database(), partial)
> j = json_dumps(list(p))
> return Response(j, mimetype='application/json')
>
> [...snip...]
>
> def autocomplete(db, prefix):
> upperPrefix = prefix.upper()
> regex = get_prefix_regex(upperPrefix)
> matching = db.wikititles.find(
> {'name_in_upper_case': regex}
> ).sort(
> [('reverse_links', -1)]
> )
> return (title['name'] for title in matching)
>
>
>
>
> On 03/09/2013 03:25 PM, Joel Steres wrote:
>>
>> Based on suggestions at HAK I added prototype of a search autocomplete
>> feature. To offload the server I pass all the possible matches to the
>> client at once rather than interactively getting autocomplete
>> suggestions from the server on each keypress. The result is it is too
>> big/slow and only matches single strings. Still, would someone please
>> test it and tell me if it is worth pursuing. (Note may require
>> patience. When I loaded it from zhen across several network hops it
>> took 11 seconds before it was loaded. Not sure why especially when
>> the response code was 304, not modified.)
>>
>> Autocomplete is only attached to the search box at
>> http://127.0.0.1:25000/iiab/books/
>
>
>
More information about the IIAB
mailing list