A web application for comparing search results across multiple academic search engines, including ADS/SciX, Google Scholar, Semantic Scholar, and Web of Science.
- Compare search results from multiple academic search engines
- Analyze similarity and differences between result sets
- Experiment with boosting factors to improve search rankings
- Perform A/B testing of different search algorithms
- Debug tools for API testing and diagnostics
- Direct Solr proxy for ADS/SciX queries (no API key required)
The application now includes integration with Quepid, a search relevance testing platform. This integration allows you to:
- Connect to your Quepid cases containing relevance judgments
- Evaluate search results using industry-standard metrics like nDCG@10
- Compare performance across different search engines
- Test how changes to search algorithms affect relevance scores
To use the Quepid integration, you'll need to set the following environment variables:
QUEPID_API_URL=https://app.quepid.com/api/
QUEPID_API_KEY=your_api_key_here
The following endpoint has been added:
POST /experiments/quepid-evaluation
: Evaluate search results against Quepid judgments
Example request:
{
"query": "katabatic wind",
"sources": ["ads", "scholar", "semantic_scholar"],
"case_id": 123,
"max_results": 20
}
Example response:
{
"query": "katabatic wind",
"case_id": 123,
"case_name": "Atmospheric Sciences",
"source_results": [
{
"source": "ads",
"metrics": [
{
"name": "ndcg@10",
"value": 0.85,
"description": "Normalized Discounted Cumulative Gain at 10"
},
{
"name": "p@10",
"value": 0.7,
"description": "Precision at 10"
}
],
"judged_retrieved": 15,
"relevant_retrieved": 12,
"results_count": 20
}
],
"total_judged": 25,
"total_relevant": 18
}
The project is structured as follows:
-
backend/
: FastAPI backend with search servicesapp/
: Application codeapi/
: API routes and modelscore/
: Core configuration and utilitiesservices/
: Search engine integration servicesutils/
: Utility functions
tests/
: Backend tests
-
frontend/
: React frontend applicationpublic/
: Static filessrc/
: React source codecomponents/
: React componentsservices/
: API service functions
- Python 3.9+
- Node.js 14+
- API keys for academic search engines (optional)
-
Navigate to the backend directory:
cd backend
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Create a
.env.local
file in the project root with your API keys:ADS_API_TOKEN=your_ads_token SEMANTIC_SCHOLAR_API_KEY=your_ss_key WEB_OF_SCIENCE_API_KEY=your_wos_key
The application supports querying ADS/SciX directly through a Solr proxy, which offers faster results and doesn't require an API key. Configure this in your environment file:
# Solr proxy URL (default: https://scix-solr-proxy.onrender.com/solr/select)
ADS_SOLR_PROXY_URL=https://scix-solr-proxy.onrender.com/solr/select
# Query method (options: solr_only, api_only, solr_first)
# - solr_only: Only use Solr proxy
# - api_only: Only use ADS API
# - solr_first: Try Solr first, fall back to API if needed (default)
ADS_QUERY_METHOD=solr_first
-
Navigate to the frontend directory:
cd frontend
-
Install dependencies:
npm install
-
Start both frontend and backend servers:
./start_local.sh
Or run them separately:
-
Backend:
cd backend python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
-
Frontend:
cd frontend npm start
-
-
Open your browser and navigate to http://localhost:3000
- Run backend tests:
cd backend pytest
This application is configured for deployment on Render.com using the render.yaml
configuration file.
The application supports different environments:
local
: For local developmentdevelopment
: For development deploymentstaging
: For staging deploymentproduction
: For production deployment
Environment-specific configuration is loaded from:
.env.local
.env.dev
.env.staging
.env.prod
When running locally, the API documentation is available at:
- Swagger UI: http://localhost:8000/api/docs
- ReDoc: http://localhost:8000/api/redoc