-- Leo's gemini proxy

-- Connecting to gemi.dev:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Better Gemini Search Results with Kennedy and Gemipedia

2022-06-04 | #search #kennedy #cgi #gemipedia | @Acidus


A few months ago I built Kennedy, a Gemini search engine, which gets a decent amount of traffic:


🔭 Kennedy - Search Gemini


A few weeks ago, I built Gemipedia, a Gemini-first frontend to Wikipedia which includes, among other things, a search interface.


Gemipedia


I found that integrating Gemipedia results into Kennedy's search results created a great user experience. Specifically, when you do a search on Kennedy, I query not only the full text index for all of Gemini space, I also search Wikipedia for articles. If I get a hit, I return the top match as a Gemipedia link at the top of the first page of search results. I also include a link to Gemipedia's search results, containing more Wikipedia content which mentions your query.


I feel this is a good compromise that balances showing content on gemini with content from Wikipedia, without one overwhelming the other. I also made some tweaks to Kennedy's ranking algorithm which surfaces more valuable content.


As an example, take a look at the new Kennedy results for "Z80":


Search results for "Z80"


At the top, you get a link to Gempedia for the article about the "Zilog Z80", which gives you more context about your query. You also get the semantic description "8-bit microprocessor". Finally you get a direct link to an image of a Z80 microprocessor, which many Gemini browsers can render without leaving the results page.


Now, onto the results.


First result is a directory listing of someone who built a homebrew Z80 computer. It contains schematics, images, and documents describing the process.

Second result is a gemlog of someone writing about building multiple Z80 homebrew computers.

Third result is about someone's Retro computing collection with info about a Z80 homebrew computer. This page actually appears to be a poorly converted Markdown document, that still has lots of Markdown in it. Kennedy ignores certain things when indexing gemtext, such as the URLs in the link lines. Because this is poorly formatted Markdown, Kennedy's indexer sees many more references to "z80" in things like URLs that are normally ignored. So this page scores higher in a full text search, which is kind of a bug. Still a pretty good result.

Fourth result is a nostalgic discussion on midnight.pub about Z80 computers. midnight.pub is a popular site with a lot of inbound links from other capsules, so it ranks more highly in search results.


I certainly see room for improvement, but if I were interested in the Z80 computers, these results give me accurate and relevant results! Searching for other topics I am interested in also produces great results:

'Amiga' results

'offline' results

'gameboy' results

'Andy Hertzfeld' results


From "search" box to "answers" box?


What's interesting is Kennedy takes multiple actions, in parallel, on an incoming query. Currently it searches the full text index of Gemini content, as well as queries Wikipedia. However this can easily be expanded:


Querying a city or location? Automatically link to a Chilly Weather forecast

⛄️ Chilly Weather - Weather service

Answer simple questions like "What is my IP?" or "where am I?"

Solve math or do unit conversions

Easter Eggs!

xyzzy

"Would you like to play a game?"


The goal of Kennedy is to direct people to intersting content on Gemini. Unlike Google evolving their "search" box into an "answers" box, I have no interest in keeping people on "kennedy.gemi.dev". I want to get users to awesome content and capsules as quickly as possible. Perhaps some of these use cases should instead redirect the user's input to someone else's service or CGI? Don't do unit conversions myself, detect a unit conversion, and redirect to cool tools like this:

Roly's Gemini Calculator


Have some thoughts or ideas? I'm always open to feedback!

Contact me


BTW, Kennedy is open source!

Kennedy Source Code

-- Response ended

-- Page fetched on Tue May 21 10:00:37 2024