Skip to content
This repository has been archived by the owner on Jun 4, 2022. It is now read-only.

BLUEPRINT Search

Adrian Cochrane edited this page Mar 21, 2017 · 3 revisions

My vision for search will probably stretch beyond Oddysseus but what most relates to it will be described below.

In short the goal is to help the user find new pages, and the current solutions is to try to create keyword search services which'll satisfy "everyone". The problem with this design is that "everyone" is a very bad persona.

The way I'd correct that is by 1) supporting multiple search engines in the Oddysseus UI and later 2) integrate a default search engine which suggests others by topic.

Multi-search

Users could register any OpenSearch compatible service by clicking a magnifying glass icon in the addressbar (fills in glassy blue once installed).

Following that anything entered into the addressbar that isn't obviously a webaddress will be sent to those services (unless untagged with "autocomplete"). Hitting one of these autocompletions will then merge the results from all your search engines into one page (unless you select one from the autocompletion menu).

In the topright would be a grid of search icons would be selectable (shows an identifying colour for the service used in the results to depict sources and indicate active status). Hovering over a search engine shows a link to search with that service directly.

This design is closest to Firefox's except I don't have a seperate searchbox and the combined search is new. However DuckDuckGo have said their upstream sources don't like this, so there might be a reason for this. I see this as being silly and I don't see much difference between users manually checking multiple search engines and us doing it for them. Either way their acting through Oddysseus. Still if all goes well the next stage should promote search engines that are happy to be merged.

Implementation

The merge operation would be implemented using an in-memory and cached scratch database.

Suggesting Search Services

While this design will work well with the services of today, it would work better with a new perspective on how to design search services.

One that guides them to formulate a query within a particular field, rather than one which tries to intent out of freeform text. One that acknowledges the benefit users enjoy from tools with a specific persona (what's Google's persona? Everyone?). One that focuses on narrowing down the haystack rather than digging through it.

What's relevant to Oddysseus's design though is that I'd still need to give users a service to start with. With this change of perspective I now know they don't know where to search, so I splatter words across the screen in a word cloud. As some catches the user's eye and they click it the page would animate revealing more topics. Eventually a search engine would pop up and they'd be able to enter a search in it's entry. Get it snappy and intriguing enough, and the user should breeze through the UI while enjoying it.

This service would further be integrated into Oddysseus as it's sole default search engine, so that when you search for a specific topic some services would be suggested to search with. Or maybe some additional topics to narrow down your search.

Additionally if we add bookmark sharing, we may want to add UI to share subsections of your bookmarks with this service.

Implementation

This service would be split into a wiki section for soliciting and harvesting (OpenSearch) data, and a seperate DAT service to perform the query. Our OpenSearch support would have to be extended to support querying suggestions from static DAT pages but otherwise we wouldn't need to special case. The use of DAT ensures maximum privacy, as normal use of the site doesn't even involve telling anyone in particular what you're looking at (and at that only giving out pieces of the puzzle to different people).

To create the UI there's already a D3 plugin that implements the intriguing look we can borrow for the service, leaving the trick being to integrate that with a static DAT database. This database could, say, be implemented as a tree labelled by bloomfilters which scale as you get closer to the leaves. At that point the trick would be maintaining a good balance.

Technologies like DAT and IPFS also make good services for sharing bookmarks and capturing permalinks without Oddysseus needing to setup a server for them to use.