[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
/significant-terms.html
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:
{{{
woocommerce-gateway-paypal-express-checkout
woocommerce-gateway-stripe
yith-woocommerce-wishlist
woocommerce-services
contact-form-7
revslider
akismet
js_composer
woocommerce-gateway-paypal-powered-by-braintree
regenerate-thumbnails
}}}
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