This is the repository backing the wordpress.algolia.com website. It's an Angular.js app using the AlgoliaSearch API client to power the search feature.
The search results are refreshed as you type, querying the Algolia API at each keystroke.
The Wordpress Plugins are crawled with a simple Ruby+Shell script and are formatted as follow in Algolia:
{
"objectID": "540765600",
"name": "Akismet",
"slug": "akismet",
"version": "3.1.3",
"popular": true,
"author": "Automattic",
"author_profile": "//profiles.wordpress.org/matt",
"contributors": {
"matt": "//profiles.wordpress.org/matt",
"ryan": "//profiles.wordpress.org/ryan",
// [...]
},
"requires": "3.2",
"tested": "4.2.4",
"rating": 5,
"num_ratings": "377",
"ratings": { "1": "14", "2": "3", "3": "5", "4": "12", "5": "343" },
"downloaded": 34362207,
"last_updated": "2015-07-06 11:44pm GMT",
"added": "2005-10-20",
"homepage": "http://akismet.com/",
"short_description": "Akismet checks your comments against the Akismet Web service to see if they look like spam or not.",
"download_link": "https://downloads.wordpress.org/plugin/akismet.3.1.3.zip",
"tags": [ "Akismet", "anti-spam", "antispam", "comment moderation", "comment spam", "comments", "contact form spam", "spam", "spam comments" ],
"donate_link": ""
}
The Algolia index is configured with the following settings:
{
"attributesToIndex": ['unordered(name)', 'unordered(tags)', 'author', 'unordered(short_description)'],
"customRanking": ['desc(downloaded)'],
"attributesForFaceting": ['author', 'tags', 'rating'],
"ranking": ['desc(popular)', 'typo', 'words', 'proximity', 'attribute', 'exact', 'custom']
}
We're using the Algoliasearch Helper to perform the search queries while maintaining the refinements state, configured as follow:
algoliasearchHelper($scope.client, 'wordpress_plugins', {
facets: ['tags', 'author'],
disjunctiveFacets: ['rating'],
attributesToRetrieve: ['name', 'slug', 'rating', 'num_ratings', 'downloaded', 'last_updated', 'ratings', 'author_profile'],
attributesToHighlight: ['name', 'short_description', 'author', 'tags'],
maxValuesPerFacet: 10
});
To start developing, you can use the following commands:
$ [npm install -g gulp]
$ npm install
$ gulp
To deploy to the GitHub gh-pages
branch, use the following commands:
$ gulp deploy
$ open https://wordpress.algolia.com