WordPress.org

Making WordPress.org

Changeset 4752


Ignore:
Timestamp:
01/20/2017 11:36:49 PM (16 months ago)
Author:
tellyworth
Message:

Plugin directory search: improve search precision. Props @gibrown.

See https://meta.trac.wordpress.org/ticket/1692#comment:145 for detailed notes. This fixes most previously reported search issues.

Fixes #1692

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search.php

    r4654 r4752  
    284284        }
    285285
    286         $locale = get_locale();
    287         if ( $locale && $locale !== 'en' && $locale !== 'en_US' ) {
    288             $es_wp_query_args['query_fields'] = array( "title_{$locale}^1.2", 'title_en^0.2', "content_{$locale}", 'content_en^0.2', "excerpt_{$locale}^1.2", 'excerpt_en^0.2', 'author', 'tag', 'category', 'slug_ngram^0.005', 'slug^1.2', 'contributors' );
    289         } else {
    290             $es_wp_query_args['query_fields'] = array( 'title_en^1.2', 'content_en', 'excerpt_en^1.2', 'author', 'tag', 'category', 'slug_ngram^0.005', 'slug^1.2', 'contributors' );
    291         }
    292 
     286        $es_wp_query_args['locale'] = get_locale();
     287       
    293288        // You can use this filter to modify the search query parameters, such as controlling the post_type.
    294289        // These arguments are in the format for convert_wp_es_to_es_args(), i.e. WP-style.
     
    488483
    489484            'query'          => null,    // Search phrase
    490             'query_fields'   => array( 'title_en^2', 'content_en', 'author', 'tag', 'category', 'slug_ngram', 'contributors' ),
     485            'query_fields'   => array(), // hacking to be able to do a very different type of query
     486            'locale'         => false,
    491487
    492488            'post_type'      => null,  // string or an array
     
    607603        }
    608604
     605        if ( $args['locale'] && $args['locale'] !== 'en' && $args['locale'] !== 'en_US' ) {
     606            $locale = $args['locale'];
     607        } else {
     608            $locale = 'en';
     609        }
     610       
    609611        ///////////////////////////////////////////////////////////
    610612        // Build the query - potentially extracting more filters
     
    619621                        'multi_match' => array(
    620622                            'query'  => $args['query'],
    621                             'fields' => $args['query_fields'],
    622                             'type'  => 'cross_fields',
     623                            'fields' => 'all_content_' . $locale,
     624                            'boost'  => 0.1,
    623625                            'operator' => 'and',
    624626                        ),
     
    628630                            'multi_match' => array(
    629631                                'query'  => $args['query'],
    630                                 'fields' => $args['query_fields'],
     632                                'fields' => array(
     633                                    'title_' . $locale,
     634                                    'excerpt_' . $locale,
     635                                    'description_' . $locale,
     636                                    'taxonomy.plugin_tags.name',
     637                                ),
    631638                                'type'  => 'phrase',
     639                                'boost' => 2
     640                            ),
     641                        ),
     642                        array(
     643                            'multi_match' => array(
     644                                'query'  => $args['query'],
     645                                'fields' => array(
     646                                    'title_' . $locale . '.ngram'
     647                                ),
     648                                'type'  => 'phrase',
     649                                'boost' => 0.2
     650                            ),
     651                        ),
     652                        array(
     653                            'multi_match' => array(
     654                                'query'  => $args['query'],
     655                                'fields' => array(
     656                                    'title_' . $locale,
     657                                    'slug_text',
     658                                ),
     659                                'type'  => 'best_fields',
     660                                'boost' => 2
     661                            ),
     662                        ),
     663                        array(
     664                            'multi_match' => array(
     665                                'query'  => $args['query'],
     666                                'fields' => array(
     667                                    'excerpt_' . $locale,
     668                                    'description_' . $locale,
     669                                    'taxonomy.plugin_tags.name',
     670                                ),
     671                                'type'  => 'best_fields',
     672                                'boost' => 2
     673                            ),
     674                        ),
     675                        array(
     676                            'multi_match' => array(
     677                                'query'  => $args['query'],
     678                                'fields' => array(
     679                                    'author',
     680                                    'contributors',
     681                                ),
     682                                'type'  => 'best_fields',
     683                                'boost' => 2
    632684                            ),
    633685                        ),
     
    795847                        ),
    796848                        'boost_mode' => 'multiply',
    797                         'max_boost' => 5,
    798849                    )
    799850                ),
Note: See TracChangeset for help on using the changeset viewer.