[wp-meta] [Making WordPress.org] #1729: Implement Plugin Recommender

Making WordPress.org noreply at wordpress.org
Fri Nov 3 18:51:37 UTC 2017

#1729: Implement Plugin Recommender
 Reporter:  dd32              |       Owner:
     Type:  task              |      Status:  new
 Priority:  normal            |   Milestone:
Component:  Plugin Directory  |  Resolution:
 Keywords:  2nd-opinion       |

Comment (by gibrown):

 > implement a simple recommended plugins API response using Elasticsearch.

 The alg as implemented will almost entirely be based on popularity rather
 than any notion of co-occurrence. It's a good start, but I think co-
 occurrence would be much more powerful.

 The easiest way to index this would be to have an index with one doc per
 site and then look at the uncommonly common plugins using a significant
 terms aggregation: https://www.elastic.co/guide/en/elasticsearch/guide/2.x

 I played around with this recently on an index of Jetpack sites that we
 (Automattic) have:

 GET jetpack-sites-8/_search
   "size": 0,
   "query": {
     "bool": {
       "must": [
           "term": {
             "enabled_plugin_slugs": {
               "value": "woocommerce"
   "aggs": {
     "NAME": {
       "significant_terms": {
         "exclude": ["jetpack","woocommerce"],
         "field": "enabled_plugin_slugs"

 That query then gets the following recommendations:


 Which is pretty good. Akismet is super popular (>5m installs), but
 woocommerce-gateway-paypal-express-checkout with 300k installs is a much
 better recommendation. Having the full list of plugins on a site would
 make the results even better.

 However, this requires indexing a doc for every site (which there are many
 obvious reasons not to do). I think what we want is a set of plugins that
 are commonly installed with any particular plugin and then put that list
 into post meta for each plugin. We can then (I think) query that field to
 find plugins that are commonly installed together.

 For filling in the post meta, I'd recommend we try an algorithm like this:

 For each plugin P:
    create a count C for each plugin Q that is co-installed with it
    if ( C > 10% of the install count of P ) then put Q into a post meta
 list for P

 10% may be too low. Very popular plugins may have a very long list of
 plugins. (though maybe not due to it being harder to get to 10%.

 I don't really know what the query will look like, but I think I can come
 up with one once I have this data. :) It probably won't work as well as
 the one above, but I think it would be an ok v1.

Ticket URL: <https://meta.trac.wordpress.org/ticket/1729#comment:6>
Making WordPress.org <https://meta.trac.wordpress.org/>
Making WordPress.org

More information about the wp-meta mailing list