Personalizar Stopwords por Motor
SearchWP usa stopwords (palavras comuns que não são úteis na busca, mas podem inchar o índice) para omitir palavras de seu índice e, portanto, ignorar esses termos na busca também. Remover stopwords aumenta a relevância e melhora o desempenho.
Por padrão, os stopwords do SearchWP são globais, aplicando-se a todos os Motores. Se você tiver uma situação em que deseja personalizar os stopwords por Motor, podemos aproveitar os hooks do SearchWP para fazer exatamente isso.
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| /** | |
| * Customize SearchWP stopwords per Engine. | |
| */ | |
| // Optional: remove all Stopwords so you can add only unique Stopwords per Engine. | |
| add_filter( 'searchwp\stopwords', '__return_empty_array' ); | |
| // Add unique stopword(s) for a single SearchWP Engine. | |
| add_filter( 'searchwp\query\search_string', function( $search_string, $query ) { | |
| // Remove "apple" and "orange" for my_engine searches. | |
| if ( 'my_engine' === $query->get_engine() ) { | |
| $search_string = str_replace( [ 'apple', 'orange' ], '', $search_string ); | |
| } | |
| return $search_string; | |
| }, 20, 2 ); |
Neste trecho, estamos primeiro usando o hook searchwp\stopwords para remover todos os stopwords do SearchWP. Precisamos trabalhar a partir de uma base em branco, indexando todo o conteúdo. Se armazenássemos stopwords na aba Configurações da tela de configurações do SearchWP, esses stopwords seriam ignorados antes que tivéssemos a chance de personalizá-los por Motor.
O segundo hook searchwp\query\search_string aplica a lógica de stopwords em cada busca enviada ao SearchWP.
No trecho acima, estamos removendo apple e orange da string de busca *apenas* se o Motor em uso for my_engine.
apple e orange *não são* removidos se qualquer outro Motor for usado.
Este trecho pode ser personalizado para qualquer Motor(es) e quaisquer stopwords.

