WordPress.org

Making WordPress.org

Changeset 4752


Ignore:
Timestamp:
01/20/17 23:36:49 (11 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.