This project contains the full implementation of Fu-Finder using Elasticsearch. This game is a reincarnation of Fu-Finder developed by the author examining query behaviour. It is in the process of being revamped to show the differences in query behaviour required for keyword and semantic search, or vector search.
This repo contains the following application layers:
- A React and Typescript UI, present under the
src
folder - Typescript Netlify functions accessible under the
functions
folder - Utility functions for accessing Elaticsearch via the Elasticsearch Node.js client
The UI and Netlify functions both need to be running to play the game locally.
Before running locally please ensure you have the following pre-requisites installed:
The npm
dependencies must be installed before running the application:
npm install
Running both the UI and server components can be done using the nx serve
command. Note that the cloud ID and API key for your Elastic cloud deployment is required to start the server, either by exporting environment variables or including your own .env file at the top of the project.
export ELASTIC_CLOUD_ID=my-elastic-deployment-cloud-id
export ELASTIC_API_KEY=my-api-key
netlify dev
The app is accessible via the web browser at http://localhost:8888
.
Run npm run test
to execute the unit tests via Jest.
For those interested in the original Fu-Finder game, and the inspiring game PageHunt, check out the below academic papers and resources.
- Fu-Finder: A Game for Studying Querying Behaviours
- Page Hunt: Improving Search Engines Using Human Computation Games
- Internet Widgets- GWAP from Bing: Page Hunt
For Elastic-fu Finder, we used a subset of the top 10 million websites as calculated via the Open PageRank initiative. Open PageRank uses a couple of sources for it's website dataset, including Common Crawl.