エンジンごとにストップワードをカスタマイズする
SearchWPは、検索時に役立たないがインデックスを肥大化させる可能性のある一般的な単語であるストップワードを使用して、インデックスから単語を除外し、検索時にもそれらの用語を無視します。ストップワードを削除すると、関連性が向上し、パフォーマンスが向上します。
デフォルトでは、SearchWPのストップワードはグローバルであり、すべてのエンジンに適用されます。エンジンごとにストップワードをカスタマイズしたい状況がある場合は、SearchWPのフックを利用してそれを行うことができます。
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 ); |
このスニペットでは、まずsearchwp\stopwordsフックを使用して、SearchWPのすべてのストップワードを削除します。空白のスレートから作業し、すべてのコンテンツをインデックス化する必要があります。SearchWPの設定画面の[設定]タブにストップワードを保存した場合、エンジンごとにカスタマイズする機会を得る前に、それらのストップワードは無視されます。
2番目のフックsearchwp\query\search_stringは、SearchWPに送信されたすべての検索にストップワードのロジックを適用します。
上記の Сниппет では、使用中のエンジンがmy_engineの場合にのみ、検索文字列からappleとorangeを削除しています。
他のエンジンが使用されている場合、appleとorangeは削除されません。
このスニペットは、任意のエンジンおよび任意のストップワードに合わせてカスタマイズできます。

