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
srcfolder - Typescript Netlify functions accessible under the
functionsfolder - 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 installRunning 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 devThe 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.
