Relevanssi – A Better Search - Version 4.12.0

Version Description

  • New feature: New filter hook relevanssi_phrase_queries can be used to add phrase matching queries to support more content types.
  • New feature: New filter hook relevanssi_excerpt_gap lets you adjust the first line of excerpt optimization.
  • Changed behaviour: The relevanssi_admin_search_element filter hook now gets the post object as the second parameter, rendering the filter hook more useful.
  • Changed behaviour: Relevanssi now automatically optimizes excerpt creation in long posts. You can still use relevanssi_optimize_excerpts for further optimization, but it's probably not necessary.
  • Changed behaviour: The relevanssi_tag_before_tokenize filter hook parameters were changed in order to be actually useful and to match what the filter hook is supposed to do.
  • Minor fix: In some cases Relevanssi wouldn't highlight the last word of the title. This is more reliable now.
  • Minor fix: Relevanssi will now add the highlight parameter only to search results, and not to other links on the search results page.
  • Minor fix: Improved fringe cases in nested taxonomy queries.
  • Minor fix: Taxonomy terms in WPML were not indexed correctly. Instead of the post language, the current language was used, so if your admin dashboard is in English, German posts would get English translations of the terms, not German. This is now fixed.
  • Minor fix: Excerpt creation is now faster when multiple excerpts are not used.
  • Minor fix: The SEO plugin noindex setting did not actually work. That has been fixed now.
Download this release

Release Info

Developer msaari
Plugin Icon 128x128 Relevanssi – A Better Search
Version 4.12.0
Comparing to
See all releases

Code changes from version 4.11.0 to 4.12.0

lib/admin-ajax.php CHANGED
@@ -268,11 +268,13 @@ EOH;
268
  /**
269
  * Filters the admin search results element.
270
  *
271
- * The post element is a <li> element. Feel free to edit the element any way you want to.
 
272
  *
273
  * @param string $post_element The post element.
 
274
  */
275
- $result .= apply_filters( 'relevanssi_admin_search_element', $post_element );
276
  if ( isset( $post->blog_id ) ) {
277
  restore_current_blog();
278
  }
268
  /**
269
  * Filters the admin search results element.
270
  *
271
+ * The post element is a <li> element. Feel free to edit the element any
272
+ * way you want to.
273
  *
274
  * @param string $post_element The post element.
275
+ * @param object $post The post object.
276
  */
277
+ $result .= apply_filters( 'relevanssi_admin_search_element', $post_element, $post );
278
  if ( isset( $post->blog_id ) ) {
279
  restore_current_blog();
280
  }
lib/common.php CHANGED
@@ -299,9 +299,8 @@ function relevanssi_remove_punct( $a ) {
299
  }
300
 
301
  $a = preg_replace( '/&lt;(\d|\s)/', '\1', $a );
302
-
303
  $a = html_entity_decode( $a, ENT_QUOTES );
304
- $a = preg_replace( '/<[!a-z]*>/', ' ', $a );
305
 
306
  $punct_options = get_option( 'relevanssi_punctuation' );
307
 
@@ -528,7 +527,14 @@ function relevanssi_prevent_default_request( $request, $query ) {
528
  * @return int[] An array of tokens as the keys and their frequency as the
529
  * value.
530
  */
531
- function relevanssi_tokenize( $string, $remove_stops = true, $min_word_length = -1 ) {
 
 
 
 
 
 
 
532
  $tokens = array();
533
  if ( is_array( $string ) ) {
534
  // If we get an array, tokenize each string in the array.
@@ -593,12 +599,12 @@ function relevanssi_tokenize( $string, $remove_stops = true, $min_word_length =
593
  $accept = false;
594
  }
595
 
596
- if ( RELEVANSSI_PREMIUM ) {
597
  /**
598
  * Fires Premium tokenizer.
599
  *
600
- * Filters the token through the Relevanssi Premium tokenizer to add some
601
- * Premium features to the tokenizing (mostly stemming).
602
  *
603
  * @param string $token Search query token.
604
  */
@@ -924,8 +930,8 @@ function relevanssi_add_highlight( $permalink, $link_post = null ) {
924
  * @global object $post The global post object.
925
  *
926
  * @param string $link The link to adjust.
927
- * @param object|int $link_post The post to modify, either WP post object or the post
928
- * ID. If null, use global $post. Defaults null.
929
  *
930
  * @return string The modified link.
931
  */
@@ -941,7 +947,7 @@ function relevanssi_permalink( $link, $link_post = null ) {
941
  $link = $link_post->relevanssi_link;
942
  }
943
 
944
- if ( is_search() ) {
945
  $link = relevanssi_add_highlight( $link, $link_post );
946
  }
947
  return $link;
@@ -1088,6 +1094,9 @@ function relevanssi_get_forbidden_post_types() {
1088
  'acfe-dop', // ACF Extended.
1089
  'acfe-dpt', // ACF Extended.
1090
  'acfe-dt', // ACF Extended.
 
 
 
1091
  );
1092
  }
1093
 
299
  }
300
 
301
  $a = preg_replace( '/&lt;(\d|\s)/', '\1', $a );
 
302
  $a = html_entity_decode( $a, ENT_QUOTES );
303
+ $a = relevanssi_strip_all_tags( $a );
304
 
305
  $punct_options = get_option( 'relevanssi_punctuation' );
306
 
527
  * @return int[] An array of tokens as the keys and their frequency as the
528
  * value.
529
  */
530
+ function relevanssi_tokenize( $string, $remove_stops = true, int $min_word_length = -1 ) : array {
531
+ $string_for_phrases = is_array( $string ) ? implode( ' ', $string ) : $string;
532
+ $phrases = relevanssi_extract_phrases( $string_for_phrases );
533
+ $phrase_words = array();
534
+ foreach ( $phrases as $phrase ) {
535
+ $phrase_words = array_merge( $phrase_words, explode( ' ', $phrase ) );
536
+ }
537
+
538
  $tokens = array();
539
  if ( is_array( $string ) ) {
540
  // If we get an array, tokenize each string in the array.
599
  $accept = false;
600
  }
601
 
602
+ if ( RELEVANSSI_PREMIUM && ! in_array( $token, $phrase_words, true ) ) {
603
  /**
604
  * Fires Premium tokenizer.
605
  *
606
+ * Filters the token through the Relevanssi Premium tokenizer to add
607
+ * some Premium features to the tokenizing (mostly stemming).
608
  *
609
  * @param string $token Search query token.
610
  */
930
  * @global object $post The global post object.
931
  *
932
  * @param string $link The link to adjust.
933
+ * @param object|int $link_post The post to modify, either WP post object or the
934
+ * post ID. If null, use global $post. Defaults null.
935
  *
936
  * @return string The modified link.
937
  */
947
  $link = $link_post->relevanssi_link;
948
  }
949
 
950
+ if ( is_search() && isset( $link_post->relevance_score ) ) {
951
  $link = relevanssi_add_highlight( $link, $link_post );
952
  }
953
  return $link;
1094
  'acfe-dop', // ACF Extended.
1095
  'acfe-dpt', // ACF Extended.
1096
  'acfe-dt', // ACF Extended.
1097
+ 'um_form', // Ultimate Member.
1098
+ 'um_directory', // Ultimate Member.
1099
+ 'mailpoet_page', // Mailpoet Page.
1100
  );
1101
  }
1102
 
lib/compatibility/aioseo.php CHANGED
@@ -27,6 +27,9 @@ add_action( 'relevanssi_indexing_options', 'relevanssi_aioseo_options' );
27
  * 'aioseo_seo'. The value may also be a boolean.
28
  */
29
  function relevanssi_aioseo_noindex( bool $do_not_index, int $post_id ) {
 
 
 
30
  $noindex_posts = relevanssi_aioseo_get_noindex_posts();
31
  if ( in_array( $post_id, $noindex_posts, true ) ) {
32
  $do_not_index = 'All-in-One SEO';
@@ -44,6 +47,10 @@ function relevanssi_aioseo_noindex( bool $do_not_index, int $post_id ) {
44
  * query restriction to modify, 'reason' for the reason of restriction.
45
  */
46
  function relevanssi_aioseo_exclude( array $restriction ) {
 
 
 
 
47
  global $wpdb;
48
 
49
  $restriction['mysql'] .= " AND post.ID NOT IN (SELECT post_id FROM
27
  * 'aioseo_seo'. The value may also be a boolean.
28
  */
29
  function relevanssi_aioseo_noindex( bool $do_not_index, int $post_id ) {
30
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
31
+ return $do_not_index;
32
+ }
33
  $noindex_posts = relevanssi_aioseo_get_noindex_posts();
34
  if ( in_array( $post_id, $noindex_posts, true ) ) {
35
  $do_not_index = 'All-in-One SEO';
47
  * query restriction to modify, 'reason' for the reason of restriction.
48
  */
49
  function relevanssi_aioseo_exclude( array $restriction ) {
50
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
51
+ return $restriction;
52
+ }
53
+
54
  global $wpdb;
55
 
56
  $restriction['mysql'] .= " AND post.ID NOT IN (SELECT post_id FROM
lib/compatibility/rankmath.php CHANGED
@@ -26,6 +26,9 @@ add_action( 'relevanssi_indexing_options', 'relevanssi_rankmath_options' );
26
  * 'RankMath'. The value may also be a boolean.
27
  */
28
  function relevanssi_rankmath_noindex( $do_not_index, $post_id ) {
 
 
 
29
  $noindex = get_post_meta( $post_id, 'rank_math_robots', true );
30
  if ( is_array( $noindex ) && in_array( 'noindex', $noindex, true ) ) {
31
  $do_not_index = 'RankMath';
@@ -43,6 +46,10 @@ function relevanssi_rankmath_noindex( $do_not_index, $post_id ) {
43
  * query restriction to modify, 'reason' for the reason of restriction.
44
  */
45
  function relevanssi_rankmath_exclude( $restriction ) {
 
 
 
 
46
  global $wpdb;
47
 
48
  // Backwards compatibility code for 2.8.0, remove at some point.
26
  * 'RankMath'. The value may also be a boolean.
27
  */
28
  function relevanssi_rankmath_noindex( $do_not_index, $post_id ) {
29
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
30
+ return $do_not_index;
31
+ }
32
  $noindex = get_post_meta( $post_id, 'rank_math_robots', true );
33
  if ( is_array( $noindex ) && in_array( 'noindex', $noindex, true ) ) {
34
  $do_not_index = 'RankMath';
46
  * query restriction to modify, 'reason' for the reason of restriction.
47
  */
48
  function relevanssi_rankmath_exclude( $restriction ) {
49
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
50
+ return $restriction;
51
+ }
52
+
53
  global $wpdb;
54
 
55
  // Backwards compatibility code for 2.8.0, remove at some point.
lib/compatibility/seoframework.php CHANGED
@@ -28,6 +28,10 @@ add_action( 'relevanssi_indexing_options', 'relevanssi_seoframework_options' );
28
  * 'SEO Framework'. The value may also be a boolean.
29
  */
30
  function relevanssi_seoframework_noindex( $do_not_index, $post_id ) {
 
 
 
 
31
  $noindex = get_post_meta( $post_id, 'exclude_local_search', true );
32
  if ( '1' === $noindex ) {
33
  $do_not_index = 'SEO Framework';
@@ -46,6 +50,10 @@ function relevanssi_seoframework_noindex( $do_not_index, $post_id ) {
46
  * query restriction to modify, 'reason' for the reason of restriction.
47
  */
48
  function relevanssi_seoframework_exclude( $restriction ) {
 
 
 
 
49
  global $wpdb;
50
 
51
  $restriction['mysql'] .= " AND post.ID NOT IN (SELECT post_id FROM
28
  * 'SEO Framework'. The value may also be a boolean.
29
  */
30
  function relevanssi_seoframework_noindex( $do_not_index, $post_id ) {
31
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
32
+ return $do_not_index;
33
+ }
34
+
35
  $noindex = get_post_meta( $post_id, 'exclude_local_search', true );
36
  if ( '1' === $noindex ) {
37
  $do_not_index = 'SEO Framework';
50
  * query restriction to modify, 'reason' for the reason of restriction.
51
  */
52
  function relevanssi_seoframework_exclude( $restriction ) {
53
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
54
+ return $restriction;
55
+ }
56
+
57
  global $wpdb;
58
 
59
  $restriction['mysql'] .= " AND post.ID NOT IN (SELECT post_id FROM
lib/compatibility/seopress.php CHANGED
@@ -28,6 +28,10 @@ add_action( 'relevanssi_indexing_options', 'relevanssi_seopress_options' );
28
  * 'seopress'. The value may also be a boolean.
29
  */
30
  function relevanssi_seopress_noindex( $do_not_index, $post_id ) {
 
 
 
 
31
  $noindex = get_post_meta( $post_id, '_seopress_robots_index', true );
32
  if ( 'yes' === $noindex ) {
33
  $do_not_index = 'SEOPress';
@@ -45,6 +49,10 @@ function relevanssi_seopress_noindex( $do_not_index, $post_id ) {
45
  * query restriction to modify, 'reason' for the reason of restriction.
46
  */
47
  function relevanssi_seopress_exclude( $restriction ) {
 
 
 
 
48
  global $wpdb;
49
  // Backwards compatibility code for 2.8.0, remove at some point.
50
  if ( is_string( $restriction ) ) {
28
  * 'seopress'. The value may also be a boolean.
29
  */
30
  function relevanssi_seopress_noindex( $do_not_index, $post_id ) {
31
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
32
+ return $do_not_index;
33
+ }
34
+
35
  $noindex = get_post_meta( $post_id, '_seopress_robots_index', true );
36
  if ( 'yes' === $noindex ) {
37
  $do_not_index = 'SEOPress';
49
  * query restriction to modify, 'reason' for the reason of restriction.
50
  */
51
  function relevanssi_seopress_exclude( $restriction ) {
52
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
53
+ return $restriction;
54
+ }
55
+
56
  global $wpdb;
57
  // Backwards compatibility code for 2.8.0, remove at some point.
58
  if ( is_string( $restriction ) ) {
lib/compatibility/wpml.php CHANGED
@@ -11,6 +11,7 @@
11
  */
12
 
13
  add_filter( 'relevanssi_hits_filter', 'relevanssi_wpml_filter' );
 
14
 
15
  /**
16
  * Filters posts based on WPML language.
@@ -104,3 +105,45 @@ function relevanssi_wpml_filter( $data ) {
104
 
105
  return $data;
106
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  */
12
 
13
  add_filter( 'relevanssi_hits_filter', 'relevanssi_wpml_filter' );
14
+ add_filter( 'relevanssi_tag_before_tokenize', 'relevanssi_wpml_term_fix', 10, 4 );
15
 
16
  /**
17
  * Filters posts based on WPML language.
105
 
106
  return $data;
107
  }
108
+
109
+ /**
110
+ * Fixes translated term indexing for WPML.
111
+ *
112
+ * WPML indexed translated terms based on current admin language, not the post
113
+ * language. This filter changes the term indexing to match the post language.
114
+ *
115
+ * @param string $term_content All terms in the taxonomy as a string.
116
+ * @param array $terms All the term objects in the current taxonomy.
117
+ * @param string $taxonomy The taxonomy name.
118
+ * @param int $post_id The post ID.
119
+ *
120
+ * @return string The term names as a string.
121
+ */
122
+ function relevanssi_wpml_term_fix( string $term_content, array $terms, string $taxonomy, int $post_id ) {
123
+ $post_language = apply_filters( 'wpml_post_language_details', null, $post_id );
124
+ if ( ! is_wp_error( $post_language ) ) {
125
+ $term_content = '';
126
+
127
+ global $sitepress;
128
+ remove_filter( 'get_term', array( $sitepress, 'get_term_adjust_id' ), 1, 1 );
129
+
130
+ foreach ( $terms as $term ) {
131
+ $term = get_term(
132
+ apply_filters(
133
+ 'wpml_object_id',
134
+ $term->term_id,
135
+ $taxonomy,
136
+ true,
137
+ $post_language['language_code']
138
+ ),
139
+ $taxonomy
140
+ );
141
+
142
+ $term_content .= ' ' . $term->name;
143
+ }
144
+
145
+ add_filter( 'get_term', array( $sitepress, 'get_term_adjust_id' ), 1, 1 );
146
+ }
147
+
148
+ return $term_content;
149
+ }
lib/compatibility/yoast-seo.php CHANGED
@@ -27,6 +27,10 @@ add_action( 'relevanssi_indexing_options', 'relevanssi_yoast_options' );
27
  * 'yoast_seo'. The value may also be a boolean.
28
  */
29
  function relevanssi_yoast_noindex( $do_not_index, $post_id ) {
 
 
 
 
30
  $noindex = get_post_meta( $post_id, '_yoast_wpseo_meta-robots-noindex', true );
31
  if ( '1' === $noindex ) {
32
  $do_not_index = 'Yoast SEO';
@@ -44,6 +48,10 @@ function relevanssi_yoast_noindex( $do_not_index, $post_id ) {
44
  * query restriction to modify, 'reason' for the reason of restriction.
45
  */
46
  function relevanssi_yoast_exclude( $restriction ) {
 
 
 
 
47
  global $wpdb;
48
 
49
  // Backwards compatibility code for 2.8.0, remove at some point.
27
  * 'yoast_seo'. The value may also be a boolean.
28
  */
29
  function relevanssi_yoast_noindex( $do_not_index, $post_id ) {
30
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
31
+ return $do_not_index;
32
+ }
33
+
34
  $noindex = get_post_meta( $post_id, '_yoast_wpseo_meta-robots-noindex', true );
35
  if ( '1' === $noindex ) {
36
  $do_not_index = 'Yoast SEO';
48
  * query restriction to modify, 'reason' for the reason of restriction.
49
  */
50
  function relevanssi_yoast_exclude( $restriction ) {
51
+ if ( 'on' !== get_option( 'relevanssi_seo_noindex' ) ) {
52
+ return $restriction;
53
+ }
54
+
55
  global $wpdb;
56
 
57
  // Backwards compatibility code for 2.8.0, remove at some point.
lib/didyoumean.php CHANGED
@@ -142,6 +142,11 @@ function relevanssi_simple_generate_suggestion( $query ) {
142
  $q = 'SELECT query, count(query) as c, AVG(hits) as a FROM '
143
  . $relevanssi_variables['log_table'] . ' WHERE hits > ' . $count
144
  . ' GROUP BY query ORDER BY count(query) DESC';
 
 
 
 
 
145
  $q = apply_filters( 'relevanssi_didyoumean_query', $q );
146
 
147
  $data = get_transient( 'relevanssi_didyoumean_query' );
142
  $q = 'SELECT query, count(query) as c, AVG(hits) as a FROM '
143
  . $relevanssi_variables['log_table'] . ' WHERE hits > ' . $count
144
  . ' GROUP BY query ORDER BY count(query) DESC';
145
+ /**
146
+ * Filters the MySQL query used to fetch potential suggestions from the log.
147
+ *
148
+ * @param string $q MySQL query for fetching the suggestions.
149
+ */
150
  $q = apply_filters( 'relevanssi_didyoumean_query', $q );
151
 
152
  $data = get_transient( 'relevanssi_didyoumean_query' );
lib/excerpts-highlights.php CHANGED
@@ -250,7 +250,9 @@ function relevanssi_do_excerpt( $t_post, $query, $excerpt_length = null, $excerp
250
  }
251
  }
252
 
253
- $excerpt['text'] = relevanssi_close_tags( $excerpt['text'] );
 
 
254
 
255
  if ( ! $whole_post_excerpted ) {
256
  if ( ! $excerpt['start'] && ! empty( $excerpt['text'] ) ) {
@@ -395,7 +397,7 @@ function relevanssi_create_excerpts( $content, $terms, $query, $excerpt_length =
395
  );
396
  $excerpts[] = $excerpt;
397
  } else {
398
- if ( function_exists( 'relevanssi_extract_multiple_excerpts' ) ) {
399
  $excerpts = relevanssi_extract_multiple_excerpts(
400
  array_keys( $terms ),
401
  $content,
@@ -631,6 +633,11 @@ function relevanssi_highlight_terms( $content, $query, $convert_entities = false
631
  $replace = $start_emp_token . '\\1' . $end_emp_token;
632
  }
633
 
 
 
 
 
 
634
  $content = trim(
635
  preg_replace(
636
  $regex,
@@ -638,7 +645,6 @@ function relevanssi_highlight_terms( $content, $query, $convert_entities = false
638
  ' ' . $content
639
  )
640
  );
641
-
642
  /**
643
  * The method here leaves extra spaces or HTML tag closing brackets
644
  * inside the highlighting. That is cleaned away here.
@@ -1135,9 +1141,30 @@ function relevanssi_extract_relevant_words( $terms, $content, $excerpt_length =
1135
  $excerpt = '';
1136
  $count_words = count( $words );
1137
  $start = false;
 
1138
 
1139
  $best_excerpt_term_hits = -1;
1140
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1141
  while ( $offset < $count_words ) {
1142
  if ( $offset + $excerpt_length > $count_words ) {
1143
  $offset = $count_words - $excerpt_length;
@@ -1175,7 +1202,15 @@ function relevanssi_extract_relevant_words( $terms, $content, $excerpt_length =
1175
  }
1176
  }
1177
 
1178
- $offset += $excerpt_length;
 
 
 
 
 
 
 
 
1179
  }
1180
 
1181
  if ( '' === $excerpt ) {
@@ -1192,6 +1227,51 @@ function relevanssi_extract_relevant_words( $terms, $content, $excerpt_length =
1192
  return array( trim( $excerpt ), $best_excerpt_term_hits, $start );
1193
  }
1194
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1195
  /**
1196
  * Adds accented variations to letters.
1197
  *
250
  }
251
  }
252
 
253
+ if ( ! empty( $excerpt['text'] ) ) {
254
+ $excerpt['text'] = relevanssi_close_tags( $excerpt['text'] );
255
+ }
256
 
257
  if ( ! $whole_post_excerpted ) {
258
  if ( ! $excerpt['start'] && ! empty( $excerpt['text'] ) ) {
397
  );
398
  $excerpts[] = $excerpt;
399
  } else {
400
+ if ( function_exists( 'relevanssi_extract_multiple_excerpts' ) && get_option( 'relevanssi_max_excerpts', 1 ) > 1 ) {
401
  $excerpts = relevanssi_extract_multiple_excerpts(
402
  array_keys( $terms ),
403
  $content,
633
  $replace = $start_emp_token . '\\1' . $end_emp_token;
634
  }
635
 
636
+ // Add an extra space so that the regex that looks for a non-word
637
+ // character after the search term will find one, even if the word is
638
+ // at the end of the content (especially in titles).
639
+ $content .= ' ';
640
+
641
  $content = trim(
642
  preg_replace(
643
  $regex,
645
  ' ' . $content
646
  )
647
  );
 
648
  /**
649
  * The method here leaves extra spaces or HTML tag closing brackets
650
  * inside the highlighting. That is cleaned away here.
1141
  $excerpt = '';
1142
  $count_words = count( $words );
1143
  $start = false;
1144
+ $gap = 0;
1145
 
1146
  $best_excerpt_term_hits = -1;
1147
 
1148
+ $excerpt_candidates = $count_words / $excerpt_length;
1149
+ if ( $excerpt_candidates > 200 ) {
1150
+ /**
1151
+ * Adjusts the gap between excerpt candidates.
1152
+ *
1153
+ * The default value for the gap is number of words / 200 minus the
1154
+ * excerpt length, which means Relevanssi tries to create 200 excerpts.
1155
+ *
1156
+ * @param int The gap between excerpt candidates.
1157
+ * @param int $count_words The number of words in the content.
1158
+ * @param int $excerpt_length The length of the excerpt.
1159
+ */
1160
+ $gap = apply_filters(
1161
+ 'relevanssi_excerpt_gap',
1162
+ floor( $count_words / 200 - $excerpt_length ),
1163
+ $count_words,
1164
+ $excerpt_length
1165
+ );
1166
+ }
1167
+
1168
  while ( $offset < $count_words ) {
1169
  if ( $offset + $excerpt_length > $count_words ) {
1170
  $offset = $count_words - $excerpt_length;
1202
  }
1203
  }
1204
 
1205
+ $offset += $excerpt_length + $gap;
1206
+ }
1207
+
1208
+ if ( '' === $excerpt && $gap > 0 ) {
1209
+ $result = relevanssi_get_first_match( $words, $terms, $excerpt_length );
1210
+
1211
+ $excerpt = $result['excerpt'];
1212
+ $start = $result['start'];
1213
+ $best_excerpt_term_hits = $result['best_excerpt_term_hits'];
1214
  }
1215
 
1216
  if ( '' === $excerpt ) {
1227
  return array( trim( $excerpt ), $best_excerpt_term_hits, $start );
1228
  }
1229
 
1230
+ /**
1231
+ * Finds the first match in the content.
1232
+ *
1233
+ * Looks for search terms in the post content and stops immediately when the
1234
+ * first match is found. Then an excerpt is returned where the match is in the
1235
+ * middle of the excerpt.
1236
+ *
1237
+ * @param array $words An array of words to look in.
1238
+ * @param array $terms An array of search terms to look for.
1239
+ * @param int $excerpt_length The length of the excerpt.
1240
+ *
1241
+ * @return array The found excerpt in 'excerpt', a boolean in 'start' that's
1242
+ * true if the excerpt was from the start of the content and the number of
1243
+ * matches found in the excerpt in 'best_excerpt_term_hits'.
1244
+ */
1245
+ function relevanssi_get_first_match( array $words, array $terms, int $excerpt_length ) {
1246
+ $offset = 0;
1247
+ $excerpt = '';
1248
+ $start = false;
1249
+ $best_excerpt_term_hits = 0;
1250
+
1251
+ foreach ( $words as $word ) {
1252
+ if ( in_array( $word, $terms, true ) ) {
1253
+ $offset = floor( $offset - $excerpt_length / 2 );
1254
+ if ( $offset < 0 ) {
1255
+ $offset = 0;
1256
+ }
1257
+ $excerpt_slice = array_slice( $words, $offset, $excerpt_length );
1258
+ $excerpt = ' ' . implode( ' ', $excerpt_slice );
1259
+ $start = $offset ? false : true;
1260
+ $count_matches = relevanssi_count_matches( $terms, $excerpt );
1261
+
1262
+ $best_excerpt_term_hits = $count_matches;
1263
+ break;
1264
+ }
1265
+ $offset++;
1266
+ }
1267
+
1268
+ return array(
1269
+ 'excerpt' => $excerpt,
1270
+ 'start' => $start,
1271
+ 'best_excerpt_term_hits' => $best_excerpt_term_hits,
1272
+ );
1273
+ }
1274
+
1275
  /**
1276
  * Adds accented variations to letters.
1277
  *
lib/indexing.php CHANGED
@@ -631,12 +631,24 @@ function relevanssi_index_taxonomy_terms( &$insert_data, $post_id, $taxonomy, $d
631
  /**
632
  * Filters the taxonomy term content before indexing.
633
  *
634
- * @param string The taxonomy term content.
635
- * @param string The taxonomy term name.
636
- * @param string The taxonomy.
637
- * @param int The post ID.
 
 
 
 
 
 
638
  */
639
- $term_string = apply_filters( 'relevanssi_tag_before_tokenize', trim( $term_string ), $post_term, $taxonomy, $post_id );
 
 
 
 
 
 
640
 
641
  /** This filter is documented in lib/indexing.php */
642
  $term_tokens = apply_filters(
@@ -1131,8 +1143,8 @@ function relevanssi_index_comments( &$insert_data, $post_id, $min_word_length, $
1131
  $post_comments = relevanssi_get_comments( $post_id );
1132
  if ( ! empty( $post_comments ) ) {
1133
  $post_comments = relevanssi_strip_invisibles( $post_comments );
1134
- $post_comments = preg_replace( '/<[a-zA-Z\/][^>]*>/', ' ', $post_comments );
1135
- $post_comments = wp_strip_all_tags( $post_comments );
1136
  if ( $debug ) {
1137
  relevanssi_debug_echo( "Comment content: $post_comments" );
1138
  }
@@ -1501,8 +1513,7 @@ function relevanssi_index_content( &$insert_data, $post_object, $min_word_length
1501
  $contents = relevanssi_process_internal_links( $contents, $post_object->ID );
1502
  }
1503
 
1504
- $contents = preg_replace( '/<[a-zA-Z\/][^>]*>/', ' ', $contents );
1505
- $contents = wp_strip_all_tags( $contents );
1506
 
1507
  /**
1508
  * Filters the post content in indexing before tokenization.
631
  /**
632
  * Filters the taxonomy term content before indexing.
633
  *
634
+ * The taxonomy term content is presented as a string of term names
635
+ * separated by spaces. If you want to edit this, it's probably best to just
636
+ * reconstruct it from the taxonomy term objects contained in the second
637
+ * parameter.
638
+ *
639
+ * @param string The taxonomy term content as a string.
640
+ * @param array An array containing the taxonomy term objects for this
641
+ * taxonomy.
642
+ * @param string The taxonomy name.
643
+ * @param int The post ID for the current post.
644
  */
645
+ $term_string = apply_filters(
646
+ 'relevanssi_tag_before_tokenize',
647
+ trim( $term_string ),
648
+ $post_taxonomy_terms,
649
+ $taxonomy,
650
+ $post_id
651
+ );
652
 
653
  /** This filter is documented in lib/indexing.php */
654
  $term_tokens = apply_filters(
1143
  $post_comments = relevanssi_get_comments( $post_id );
1144
  if ( ! empty( $post_comments ) ) {
1145
  $post_comments = relevanssi_strip_invisibles( $post_comments );
1146
+ $post_comments = relevanssi_strip_all_tags( $post_comments );
1147
+
1148
  if ( $debug ) {
1149
  relevanssi_debug_echo( "Comment content: $post_comments" );
1150
  }
1513
  $contents = relevanssi_process_internal_links( $contents, $post_object->ID );
1514
  }
1515
 
1516
+ $contents = relevanssi_strip_all_tags( $contents );
 
1517
 
1518
  /**
1519
  * Filters the post content in indexing before tokenization.
lib/init.php CHANGED
@@ -453,7 +453,7 @@ function relevanssi_create_database_tables( $relevanssi_db_version ) {
453
  }
454
 
455
  if ( $docs_exists ) { // This index was removed in 4.9.2 / 2.11.2.
456
- $sql = "DROP INDEX docs ON $relevanssi_table (doc)";
457
  $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery
458
  }
459
 
453
  }
454
 
455
  if ( $docs_exists ) { // This index was removed in 4.9.2 / 2.11.2.
456
+ $sql = "DROP INDEX docs ON $relevanssi_table";
457
  $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery
458
  }
459
 
lib/options.php CHANGED
@@ -31,6 +31,7 @@ function update_relevanssi_options() {
31
  'relevanssi_index_author',
32
  'relevanssi_index_excerpt',
33
  'relevanssi_index_image_files',
 
34
  )
35
  );
36
  relevanssi_update_intval( $_REQUEST, 'relevanssi_min_word_length', true, 3 );
31
  'relevanssi_index_author',
32
  'relevanssi_index_excerpt',
33
  'relevanssi_index_image_files',
34
+ 'relevanssi_seo_noindex',
35
  )
36
  );
37
  relevanssi_update_intval( $_REQUEST, 'relevanssi_min_word_length', true, 3 );
lib/phrases.php CHANGED
@@ -18,7 +18,7 @@
18
  *
19
  * @return array An array of phrases (strings).
20
  */
21
- function relevanssi_extract_phrases( $query ) {
22
  // iOS uses “” as the default quotes, so Relevanssi needs to understand
23
  // that as well.
24
  $normalized_query = str_replace( array( '”', '“' ), '"', $query );
@@ -83,11 +83,9 @@ function relevanssi_recognize_phrases( $search_query, $operator = 'AND' ) {
83
  return $all_queries;
84
  }
85
 
86
- $custom_fields = relevanssi_get_custom_fields();
87
- $taxonomies = get_option( 'relevanssi_index_taxonomies_list', array() );
88
- $excerpts = get_option( 'relevanssi_index_excerpt', 'off' );
89
- $index_pdf_parent = get_option( 'relevanssi_index_pdf_parent' );
90
-
91
  $phrase_queries = array();
92
  $queries = array();
93
 
@@ -115,17 +113,19 @@ function relevanssi_recognize_phrases( $search_query, $operator = 'AND' ) {
115
  $phrases,
116
  $taxonomies,
117
  $custom_fields,
118
- $excerpts,
119
- $index_pdf_parent
120
  )
121
  );
122
 
123
  $phrase_queries = array();
124
 
125
  foreach ( $queries as $phrase => $p_queries ) {
126
- $p_queries = implode( ' OR relevanssi.doc IN ', $p_queries );
127
- $p_queries = "(relevanssi.doc IN $p_queries)";
128
- $all_queries[] = $p_queries;
 
 
 
129
 
130
  $phrase_queries[ $phrase ] = $p_queries;
131
  }
@@ -151,17 +151,18 @@ function relevanssi_recognize_phrases( $search_query, $operator = 'AND' ) {
151
  * Takes in phrases and a bunch of parameters and generates the MySQL queries
152
  * that restrict the main search query to only posts that have the phrase.
153
  *
154
- * @param array $phrases A list of phrases to handle.
155
- * @param array $taxonomies An array of taxonomy names to use.
156
- * @param array $custom_fields A list of custom field names to use.
157
- * @param string $excerpts If 'on', include excerpts.
158
- * @param string $index_pdf_parent If 'on', include PDF parent.
159
  *
160
  * @global object $wpdb The WordPress database interface.
161
  *
162
  * @return array An array of queries sorted by phrase.
163
  */
164
- function relevanssi_generate_phrase_queries( $phrases, $taxonomies, $custom_fields, $excerpts, $index_pdf_parent ) {
 
165
  global $wpdb;
166
 
167
  $status = relevanssi_valid_status_array();
@@ -190,7 +191,10 @@ function relevanssi_generate_phrase_queries( $phrases, $taxonomies, $custom_fiel
190
  OR post_title LIKE '%$phrase%' $excerpt)
191
  AND post_status IN ($status))";
192
 
193
- $queries[] = $query;
 
 
 
194
 
195
  if ( $taxonomies ) {
196
  $taxonomies_escaped = implode( "','", array_map( 'esc_sql', $taxonomies ) );
@@ -205,7 +209,10 @@ function relevanssi_generate_phrase_queries( $phrases, $taxonomies, $custom_fiel
205
  $taxonomies_sql
206
  AND t.name LIKE '%$phrase%' AND p.post_status IN ($status))";
207
 
208
- $queries[] = $query;
 
 
 
209
  }
210
 
211
  if ( $custom_fields ) {
@@ -243,32 +250,27 @@ function relevanssi_generate_phrase_queries( $phrases, $taxonomies, $custom_fiel
243
  AND m.meta_value LIKE '%$phrase%'
244
  AND p.post_status IN ($status))";
245
 
246
- $queries[] = $query;
247
- } elseif ( RELEVANSSI_PREMIUM ) {
248
- $index_post_types = get_option( 'relevanssi_index_post_types', array() );
249
- if ( in_array( 'attachment', $index_post_types, true ) ) {
250
- $query = "(SELECT ID
251
- FROM $wpdb->posts AS p, $wpdb->postmeta AS m
252
- WHERE p.ID = m.post_id
253
- AND m.meta_key = '_relevanssi_pdf_content'
254
- AND m.meta_value LIKE '%$phrase%'
255
- AND p.post_status IN ($status))";
256
-
257
- $queries[] = $query;
258
- }
259
  }
260
 
261
- if ( 'on' === $index_pdf_parent ) {
262
- $query = "(SELECT parent.ID
263
- FROM $wpdb->posts AS p, $wpdb->postmeta AS m, $wpdb->posts AS parent
264
- WHERE p.ID = m.post_id
265
- AND p.post_parent = parent.ID
266
- AND m.meta_key = '_relevanssi_pdf_content'
267
- AND m.meta_value LIKE '%$phrase%'
268
- AND p.post_status = 'inherit')";
269
-
270
- $queries[] = $query;
271
- }
 
 
 
 
272
 
273
  $phrase_queries[ $phrase ] = $queries;
274
  }
18
  *
19
  * @return array An array of phrases (strings).
20
  */
21
+ function relevanssi_extract_phrases( string $query ) {
22
  // iOS uses “” as the default quotes, so Relevanssi needs to understand
23
  // that as well.
24
  $normalized_query = str_replace( array( '”', '“' ), '"', $query );
83
  return $all_queries;
84
  }
85
 
86
+ $custom_fields = relevanssi_get_custom_fields();
87
+ $taxonomies = get_option( 'relevanssi_index_taxonomies_list', array() );
88
+ $excerpts = get_option( 'relevanssi_index_excerpt', 'off' );
 
 
89
  $phrase_queries = array();
90
  $queries = array();
91
 
113
  $phrases,
114
  $taxonomies,
115
  $custom_fields,
116
+ $excerpts
 
117
  )
118
  );
119
 
120
  $phrase_queries = array();
121
 
122
  foreach ( $queries as $phrase => $p_queries ) {
123
+ $pq_array = array();
124
+ foreach ( $p_queries as $query ) {
125
+ $pq_array[] = "relevanssi.{$query['target']} IN {$query['query']}";
126
+ }
127
+ $p_queries = implode( ' OR ', $pq_array );
128
+ $all_queries[] = "($p_queries)";
129
 
130
  $phrase_queries[ $phrase ] = $p_queries;
131
  }
151
  * Takes in phrases and a bunch of parameters and generates the MySQL queries
152
  * that restrict the main search query to only posts that have the phrase.
153
  *
154
+ * @param array $phrases A list of phrases to handle.
155
+ * @param array $taxonomies An array of taxonomy names to use.
156
+ * @param array|string $custom_fields A list of custom field names to use,
157
+ * "visible", or "all".
158
+ * @param string $excerpts If 'on', include excerpts.
159
  *
160
  * @global object $wpdb The WordPress database interface.
161
  *
162
  * @return array An array of queries sorted by phrase.
163
  */
164
+ function relevanssi_generate_phrase_queries( array $phrases, array $taxonomies,
165
+ $custom_fields, string $excerpts ) : array {
166
  global $wpdb;
167
 
168
  $status = relevanssi_valid_status_array();
191
  OR post_title LIKE '%$phrase%' $excerpt)
192
  AND post_status IN ($status))";
193
 
194
+ $queries[] = array(
195
+ 'query' => $query,
196
+ 'target' => 'doc',
197
+ );
198
 
199
  if ( $taxonomies ) {
200
  $taxonomies_escaped = implode( "','", array_map( 'esc_sql', $taxonomies ) );
209
  $taxonomies_sql
210
  AND t.name LIKE '%$phrase%' AND p.post_status IN ($status))";
211
 
212
+ $queries[] = array(
213
+ 'query' => $query,
214
+ 'target' => 'doc',
215
+ );
216
  }
217
 
218
  if ( $custom_fields ) {
250
  AND m.meta_value LIKE '%$phrase%'
251
  AND p.post_status IN ($status))";
252
 
253
+ $queries[] = array(
254
+ 'query' => $query,
255
+ 'target' => 'doc',
256
+ );
 
 
 
 
 
 
 
 
 
257
  }
258
 
259
+ /**
260
+ * Filters the phrase queries.
261
+ *
262
+ * Relevanssi Premium uses this filter hook to add Premium-specific
263
+ * phrase queries.
264
+ *
265
+ * @param array $queries The MySQL queries for phrase matching.
266
+ * @param string $phrase The current phrase.
267
+ * @param string $status A string containing post statuses.
268
+ *
269
+ * @return array An array of phrase queries, where each query is an
270
+ * array that has the actual MySQL query in 'query' and the target
271
+ * column ('doc' or 'item') in the Relevanssi index table in 'target'.
272
+ */
273
+ $queries = apply_filters( 'relevanssi_phrase_queries', $queries, $phrase, $status );
274
 
275
  $phrase_queries[ $phrase ] = $queries;
276
  }
lib/search-tax-query.php CHANGED
@@ -13,8 +13,6 @@
13
  /**
14
  * Processes the tax query to formulate a query restriction to the MySQL query.
15
  *
16
- * Tested.
17
- *
18
  * @uses relevanssi_process_tax_query_row()
19
  *
20
  * @param string $tax_query_relation The base tax query relation. Default 'and'.
@@ -22,9 +20,9 @@
22
  *
23
  * @return string The query restrictions for the MySQL query.
24
  */
25
- function relevanssi_process_tax_query( $tax_query_relation, $tax_query ) {
26
  $query_restrictions = '';
27
- if ( ! isset( $tax_query_relation ) ) {
28
  $tax_query_relation = 'and';
29
  }
30
  $tax_query_relation = relevanssi_strtolower( $tax_query_relation );
@@ -78,8 +76,6 @@ function relevanssi_process_tax_query( $tax_query_relation, $tax_query ) {
78
  /**
79
  * Processes one tax_query row.
80
  *
81
- * Tested.
82
- *
83
  * @global object $wpdb The WordPress database interface.
84
  *
85
  * @param array $row The tax_query row array.
@@ -96,7 +92,10 @@ function relevanssi_process_tax_query( $tax_query_relation, $tax_query ) {
96
  * $query_restrictions, then $term_tax_ids, $not_term_tax_ids, $and_term_tax_ids
97
  * and $exist_queries.
98
  */
99
- function relevanssi_process_tax_query_row( $row, $is_sub_row, $global_relation, $query_restrictions, $tax_query_relation, $term_tax_ids, $not_term_tax_ids, $and_term_tax_ids, $exist_queries ) {
 
 
 
100
  global $wpdb;
101
 
102
  $local_term_tax_ids = array();
@@ -167,11 +166,15 @@ function relevanssi_process_tax_query_row( $row, $is_sub_row, $global_relation,
167
  )";
168
  // Clean: $term_tax_id and $n are Relevanssi-generated.
169
  } else {
170
- $query_restrictions .= " AND relevanssi.doc $tq_operator (
171
- SELECT DISTINCT(tr.object_id)
172
- FROM $wpdb->term_relationships AS tr
173
- WHERE tr.term_taxonomy_id IN ($term_tax_id))";
174
- // Clean: all variables are Relevanssi-generated.
 
 
 
 
175
  }
176
  } else {
177
  if ( 'IN' === $tq_operator ) {
@@ -220,14 +223,20 @@ function relevanssi_process_tax_query_row( $row, $is_sub_row, $global_relation,
220
  }
221
  }
222
 
223
- return array( $query_restrictions, $term_tax_ids, $not_term_tax_ids, $and_term_tax_ids, $exist_queries );
 
 
 
 
 
 
224
  }
225
 
226
  /**
227
  * Generates query restrictions from the term taxonomy ids.
228
  *
229
- * Combines different term tax ID arrays into a set of query restrictions that can be
230
- * used in an OR query.
231
  *
232
  * @global object $wpdb The WP database interface.
233
  *
@@ -238,7 +247,8 @@ function relevanssi_process_tax_query_row( $row, $is_sub_row, $global_relation,
238
  *
239
  * @return string The MySQL query restrictions.
240
  */
241
- function relevanssi_process_term_tax_ids( $term_tax_ids, $not_term_tax_ids, $and_term_tax_ids, $exist_queries ) {
 
242
  global $wpdb;
243
 
244
  $query_restriction_parts = array();
@@ -299,17 +309,19 @@ function relevanssi_process_term_tax_ids( $term_tax_ids, $not_term_tax_ids, $and
299
  /**
300
  * Gets and sanitizes the taxonomy name and slug parameters.
301
  *
302
- * Checks parameters: if they're numeric, pass them for term_id filtering, otherwise
303
- * sanitize and create a comma-separated list.
304
  *
305
- * @param string $terms_parameter The 'terms' field from the tax_query row.
306
- * @param string $taxonomy The taxonomy name.
307
- * @param string $field_name The field name ('slug', 'name').
 
308
  *
309
- * @return array An array containing numeric terms and the list of sanitized term
310
- * names.
311
  */
312
- function relevanssi_get_term_in( $terms_parameter, $taxonomy, $field_name ) {
 
313
  $numeric_terms = array();
314
  $names = array();
315
 
@@ -340,14 +352,14 @@ function relevanssi_get_term_in( $terms_parameter, $taxonomy, $field_name ) {
340
  /**
341
  * Gets the term_tax_id from a row with 'field' set to 'slug' or 'name'.
342
  *
343
- * If the slugs or names are all numeric values, will switch the 'field' parameter
344
- * to 'term_id'.
345
  *
346
  * @param array $row The taxonomy query row.
347
  *
348
  * @return array An array of term taxonomy IDs.
349
  */
350
- function relevanssi_term_tax_id_from_row( $row ) {
351
  global $wpdb;
352
 
353
  $type = $row['field'];
13
  /**
14
  * Processes the tax query to formulate a query restriction to the MySQL query.
15
  *
 
 
16
  * @uses relevanssi_process_tax_query_row()
17
  *
18
  * @param string $tax_query_relation The base tax query relation. Default 'and'.
20
  *
21
  * @return string The query restrictions for the MySQL query.
22
  */
23
+ function relevanssi_process_tax_query( string $tax_query_relation, array $tax_query ) : string {
24
  $query_restrictions = '';
25
+ if ( empty( $tax_query_relation ) ) {
26
  $tax_query_relation = 'and';
27
  }
28
  $tax_query_relation = relevanssi_strtolower( $tax_query_relation );
76
  /**
77
  * Processes one tax_query row.
78
  *
 
 
79
  * @global object $wpdb The WordPress database interface.
80
  *
81
  * @param array $row The tax_query row array.
92
  * $query_restrictions, then $term_tax_ids, $not_term_tax_ids, $and_term_tax_ids
93
  * and $exist_queries.
94
  */
95
+ function relevanssi_process_tax_query_row( array $row, bool $is_sub_row,
96
+ string $global_relation, string $query_restrictions, string $tax_query_relation,
97
+ array $term_tax_ids, array $not_term_tax_ids, array $and_term_tax_ids,
98
+ array $exist_queries ) : array {
99
  global $wpdb;
100
 
101
  $local_term_tax_ids = array();
166
  )";
167
  // Clean: $term_tax_id and $n are Relevanssi-generated.
168
  } else {
169
+ if ( 'or' === $global_relation ) {
170
+ $local_and_term_tax_ids[] = $term_tax_id;
171
+ } else {
172
+ $query_restrictions .= " AND relevanssi.doc $tq_operator (
173
+ SELECT DISTINCT(tr.object_id)
174
+ FROM $wpdb->term_relationships AS tr
175
+ WHERE tr.term_taxonomy_id IN ($term_tax_id))";
176
+ // Clean: all variables are Relevanssi-generated.
177
+ }
178
  }
179
  } else {
180
  if ( 'IN' === $tq_operator ) {
223
  }
224
  }
225
 
226
+ return array(
227
+ $query_restrictions,
228
+ $term_tax_ids,
229
+ $not_term_tax_ids,
230
+ $and_term_tax_ids,
231
+ $exist_queries,
232
+ );
233
  }
234
 
235
  /**
236
  * Generates query restrictions from the term taxonomy ids.
237
  *
238
+ * Combines different term tax ID arrays into a set of query restrictions that
239
+ * can be used in an OR query.
240
  *
241
  * @global object $wpdb The WP database interface.
242
  *
247
  *
248
  * @return string The MySQL query restrictions.
249
  */
250
+ function relevanssi_process_term_tax_ids( array $term_tax_ids, array $not_term_tax_ids,
251
+ array $and_term_tax_ids, array $exist_queries ) : string {
252
  global $wpdb;
253
 
254
  $query_restriction_parts = array();
309
  /**
310
  * Gets and sanitizes the taxonomy name and slug parameters.
311
  *
312
+ * Checks parameters: if they're numeric, pass them for term_id filtering,
313
+ * otherwise sanitize and create a comma-separated list.
314
  *
315
+ * @param string|array $terms_parameter The 'terms' field from the tax_query
316
+ * row.
317
+ * @param string $taxonomy The taxonomy name.
318
+ * @param string $field_name The field name ('slug', 'name').
319
  *
320
+ * @return array An array containing numeric terms and the list of sanitized
321
+ * term names.
322
  */
323
+ function relevanssi_get_term_in( $terms_parameter, string $taxonomy,
324
+ string $field_name ) : array {
325
  $numeric_terms = array();
326
  $names = array();
327
 
352
  /**
353
  * Gets the term_tax_id from a row with 'field' set to 'slug' or 'name'.
354
  *
355
+ * If the slugs or names are all numeric values, will switch the 'field'
356
+ * parameter to 'term_id'.
357
  *
358
  * @param array $row The taxonomy query row.
359
  *
360
  * @return array An array of term taxonomy IDs.
361
  */
362
+ function relevanssi_term_tax_id_from_row( array $row ) : array {
363
  global $wpdb;
364
 
365
  $type = $row['field'];
lib/sorting.php CHANGED
@@ -234,6 +234,9 @@ function relevanssi_get_compare_values( $key, $item_1, $item_2 ) {
234
  $key2 = relevanssi_flatten_array( $key2 );
235
  }
236
 
 
 
 
237
  $keys = array(
238
  'key1' => $key1,
239
  'key2' => $key2,
234
  $key2 = relevanssi_flatten_array( $key2 );
235
  }
236
 
237
+ $key1 = $key1 ?? '';
238
+ $key2 = $key2 ?? '';
239
+
240
  $keys = array(
241
  'key1' => $key1,
242
  'key2' => $key2,
lib/tabs/debugging-tab.php CHANGED
@@ -49,5 +49,8 @@ function relevanssi_debugging_tab() {
49
  class='button button-primary' />
50
  </p>
51
  <?php echo $how_relevanssi_sees; // phpcs:ignore WordPress.Security.EscapeOutput ?>
 
 
 
52
  <?php
53
  }
49
  class='button button-primary' />
50
  </p>
51
  <?php echo $how_relevanssi_sees; // phpcs:ignore WordPress.Security.EscapeOutput ?>
52
+
53
+ <?php do_action( 'relevanssi_debugging_tab' ); ?>
54
+
55
  <?php
56
  }
lib/utils.php CHANGED
@@ -219,11 +219,13 @@ function relevanssi_get_current_language( bool $locale = true ) {
219
  $language_code = apply_filters( 'wpml_element_language_code', null, $element );
220
 
221
  $language_details['language_code'] = $language_code;
222
- } elseif ( ! isset( $post->user_id ) ) {
223
  // Users don't have language details.
224
  $language_details = apply_filters( 'wpml_post_language_details', null, $post->ID );
225
  }
226
-
 
 
227
  $current_language = $language_details[ $locale ? 'locale' : 'language_code' ];
228
  } else {
229
  if ( $locale ) {
@@ -514,7 +516,7 @@ function relevanssi_legal_value( array $request, string $option, array $values,
514
  * @return int $val Returns < 0 if str1 is less than str2; > 0 if str1 is
515
  * greater than str2, and 0 if they are equal.
516
  */
517
- function relevanssi_mb_strcasecmp( string $str1, string $str2, string $encoding = '' ) {
518
  if ( ! function_exists( 'mb_internal_encoding' ) ) {
519
  return strnatcasecmp( $str1, $str2 );
520
  } else {
@@ -633,14 +635,14 @@ function relevanssi_return_off() {
633
  /**
634
  * Gets a post object, returns ID, ID=>parent or the post object.
635
  *
636
- * @param WP_Post $post The post object.
637
- * @param string $return_value The value to return, possible values are 'id'
638
  * for returning the ID and 'id=>parent' for returning the ID=>parent object,
639
  * otherwise the post object is returned.
640
  *
641
  * @return int|object|WP_Post The post object in the desired format.
642
  */
643
- function relevanssi_return_value( WP_Post $post, string $return_value ) {
644
  if ( 'id' === $return_value ) {
645
  return $post->ID;
646
  } elseif ( 'id=>parent' === $return_value ) {
@@ -692,6 +694,20 @@ function relevanssi_select( string $option, string $value ) {
692
  return $selected;
693
  }
694
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
695
  /**
696
  * Strips invisible elements from text.
697
  *
@@ -702,7 +718,10 @@ function relevanssi_select( string $option, string $value ) {
702
  *
703
  * @return string The processed text.
704
  */
705
- function relevanssi_strip_invisibles( string $text ) {
 
 
 
706
  $text = preg_replace(
707
  array(
708
  '@<style[^>]*?>.*?</style>@siu',
@@ -730,11 +749,14 @@ function relevanssi_strip_invisibles( string $text ) {
730
  *
731
  * @see relevanssi_strip_invisibles
732
  *
733
- * @param string $content The content.
734
  *
735
  * @return string The content without tags.
736
  */
737
- function relevanssi_strip_tags( string $content ) {
 
 
 
738
  $content = relevanssi_strip_invisibles( $content );
739
  $content = preg_replace( '/(<\/[^>]+?>)(<[^>\/][^>]*?>)/', '$1 $2', $content );
740
  return strip_tags(
@@ -757,7 +779,13 @@ function relevanssi_strip_tags( string $content ) {
757
  * @return mixed False, if no result or $offset outside the length of $haystack,
758
  * otherwise the position (which can be non-false 0!).
759
  */
760
- function relevanssi_stripos( string $haystack, string $needle, int $offset = 0 ) {
 
 
 
 
 
 
761
  if ( $offset > relevanssi_strlen( $haystack ) ) {
762
  return false;
763
  }
@@ -824,7 +852,10 @@ function relevanssi_stripos( string $haystack, string $needle, int $offset = 0 )
824
  *
825
  * @return int The length of the string.
826
  */
827
- function relevanssi_strlen( string $s ) {
 
 
 
828
  if ( function_exists( 'mb_strlen' ) ) {
829
  return mb_strlen( $s );
830
  }
@@ -841,7 +872,10 @@ function relevanssi_strlen( string $s ) {
841
  *
842
  * @return string $string The string in lowercase.
843
  */
844
- function relevanssi_strtolower( string $string ) {
 
 
 
845
  if ( ! function_exists( 'mb_strtolower' ) ) {
846
  return strtolower( $string );
847
  } else {
@@ -865,7 +899,10 @@ function relevanssi_strtolower( string $string ) {
865
  *
866
  * @return string $string The string in lowercase.
867
  */
868
- function relevanssi_substr( string $string, int $start, $length = null ) {
 
 
 
869
  if ( ! function_exists( 'mb_substr' ) ) {
870
  return substr( $string, $start, $length );
871
  } else {
219
  $language_code = apply_filters( 'wpml_element_language_code', null, $element );
220
 
221
  $language_details['language_code'] = $language_code;
222
+ } elseif ( ! isset( $post->user_id ) && 'post_type' !== $post->post_type ) {
223
  // Users don't have language details.
224
  $language_details = apply_filters( 'wpml_post_language_details', null, $post->ID );
225
  }
226
+ if ( is_wp_error( $language_details ) ) {
227
+ $current_language = apply_filters( 'wpml_current_language', null );
228
+ }
229
  $current_language = $language_details[ $locale ? 'locale' : 'language_code' ];
230
  } else {
231
  if ( $locale ) {
516
  * @return int $val Returns < 0 if str1 is less than str2; > 0 if str1 is
517
  * greater than str2, and 0 if they are equal.
518
  */
519
+ function relevanssi_mb_strcasecmp( $str1, $str2, $encoding = '' ) : int {
520
  if ( ! function_exists( 'mb_internal_encoding' ) ) {
521
  return strnatcasecmp( $str1, $str2 );
522
  } else {
635
  /**
636
  * Gets a post object, returns ID, ID=>parent or the post object.
637
  *
638
+ * @param object $post The post object.
639
+ * @param string $return_value The value to return, possible values are 'id'
640
  * for returning the ID and 'id=>parent' for returning the ID=>parent object,
641
  * otherwise the post object is returned.
642
  *
643
  * @return int|object|WP_Post The post object in the desired format.
644
  */
645
+ function relevanssi_return_value( $post, string $return_value ) {
646
  if ( 'id' === $return_value ) {
647
  return $post->ID;
648
  } elseif ( 'id=>parent' === $return_value ) {
694
  return $selected;
695
  }
696
 
697
+ /**
698
+ * Strips all tags from content, keeping non-tags that look like tags.
699
+ *
700
+ * Strips content that matches <[!a-zA-Z\/]*> to remove HTML tags and HTML
701
+ * comments, but not things like "<30 grams, 4>1".
702
+ *
703
+ * @param string $content The content.
704
+ *
705
+ * @return string The content with tags stripped.
706
+ */
707
+ function relevanssi_strip_all_tags( string $content ) : string {
708
+ return preg_replace( '/<[!a-zA-Z\/][^>]*>/', ' ', $content );
709
+ }
710
+
711
  /**
712
  * Strips invisible elements from text.
713
  *
718
  *
719
  * @return string The processed text.
720
  */
721
+ function relevanssi_strip_invisibles( $text ) {
722
+ if ( ! is_string( $text ) ) {
723
+ $text = strval( $text );
724
+ }
725
  $text = preg_replace(
726
  array(
727
  '@<style[^>]*?>.*?</style>@siu',
749
  *
750
  * @see relevanssi_strip_invisibles
751
  *
752
+ * @param string|null $content The content.
753
  *
754
  * @return string The content without tags.
755
  */
756
+ function relevanssi_strip_tags( $content ) {
757
+ if ( ! is_string( $content ) ) {
758
+ $content = strval( $content );
759
+ }
760
  $content = relevanssi_strip_invisibles( $content );
761
  $content = preg_replace( '/(<\/[^>]+?>)(<[^>\/][^>]*?>)/', '$1 $2', $content );
762
  return strip_tags(
779
  * @return mixed False, if no result or $offset outside the length of $haystack,
780
  * otherwise the position (which can be non-false 0!).
781
  */
782
+ function relevanssi_stripos( $haystack, $needle, int $offset = 0 ) {
783
+ if ( ! is_string( $haystack ) ) {
784
+ $haystack = strval( $haystack );
785
+ }
786
+ if ( ! is_string( $needle ) ) {
787
+ $needle = strval( $needle );
788
+ }
789
  if ( $offset > relevanssi_strlen( $haystack ) ) {
790
  return false;
791
  }
852
  *
853
  * @return int The length of the string.
854
  */
855
+ function relevanssi_strlen( $s ) {
856
+ if ( ! is_string( $s ) ) {
857
+ $s = strval( $s );
858
+ }
859
  if ( function_exists( 'mb_strlen' ) ) {
860
  return mb_strlen( $s );
861
  }
872
  *
873
  * @return string $string The string in lowercase.
874
  */
875
+ function relevanssi_strtolower( $string ) {
876
+ if ( ! is_string( $string ) ) {
877
+ $string = strval( $string );
878
+ }
879
  if ( ! function_exists( 'mb_strtolower' ) ) {
880
  return strtolower( $string );
881
  } else {
899
  *
900
  * @return string $string The string in lowercase.
901
  */
902
+ function relevanssi_substr( $string, int $start, $length = null ) {
903
+ if ( ! is_string( $string ) ) {
904
+ $string = strval( $string );
905
+ }
906
  if ( ! function_exists( 'mb_substr' ) ) {
907
  return substr( $string, $start, $length );
908
  } else {
readme.txt CHANGED
@@ -3,9 +3,9 @@ Contributors: msaari
3
  Donate link: https://www.relevanssi.com/buy-premium/
4
  Tags: search, relevance, better search, product search, woocommerce search
5
  Requires at least: 4.9
6
- Tested up to: 5.6.1
7
  Requires PHP: 7.0
8
- Stable tag: 4.11.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -123,8 +123,6 @@ Thus, the weight of the word for a document increases the more often it appears
123
 
124
  Each document database is full of useless words. All the little words that appear in just about every document are completely useless for information retrieval purposes. Basically, their inverted document frequency is really low, so they never have much power in matching. Also, removing those words helps to make the index smaller and searching faster.
125
 
126
- [](http://coderisk.com/wp/plugin/relevanssi/RIPS-XC1ekC4JKr)
127
-
128
  == Thanks ==
129
  * Cristian Damm for tag indexing, comment indexing, post/page exclusion and general helpfulness.
130
  * Marcus Dalgren for UTF-8 fixing.
@@ -133,6 +131,22 @@ Each document database is full of useless words. All the little words that appea
133
  * John Calahan for extensive 4.0 beta testing.
134
 
135
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  = 4.11.0 =
137
  * New feature: New filter hook `relevanssi_rendered_block` filters Gutenberg block content after the block has been rendered with `render_block()`.
138
  * New feature: New filter hook `relevanssi_log_query` can be used to filter the search query before it's logged. This can be used to log instead the query that includes synonyms (available as a parameter to the filter hook).
@@ -194,6 +208,12 @@ Each document database is full of useless words. All the little words that appea
194
  * Minor fix: The category inclusion and exclusion setting checkboxes on the Searching tab didn't work. The setting was saved, but the checkboxes wouldn't appear.
195
 
196
  == Upgrade notice ==
 
 
 
 
 
 
197
  = 4.11.0 =
198
  * New filter hooks, bug fixes.
199
 
3
  Donate link: https://www.relevanssi.com/buy-premium/
4
  Tags: search, relevance, better search, product search, woocommerce search
5
  Requires at least: 4.9
6
+ Tested up to: 5.6.3
7
  Requires PHP: 7.0
8
+ Stable tag: 4.12.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
123
 
124
  Each document database is full of useless words. All the little words that appear in just about every document are completely useless for information retrieval purposes. Basically, their inverted document frequency is really low, so they never have much power in matching. Also, removing those words helps to make the index smaller and searching faster.
125
 
 
 
126
  == Thanks ==
127
  * Cristian Damm for tag indexing, comment indexing, post/page exclusion and general helpfulness.
128
  * Marcus Dalgren for UTF-8 fixing.
131
  * John Calahan for extensive 4.0 beta testing.
132
 
133
  == Changelog ==
134
+ = 4.12.0 =
135
+ * New feature: New filter hook `relevanssi_phrase_queries` can be used to add phrase matching queries to support more content types.
136
+ * New feature: New filter hook `relevanssi_excerpt_gap` lets you adjust the first line of excerpt optimization.
137
+ * Changed behaviour: The `relevanssi_admin_search_element` filter hook now gets the post object as the second parameter, rendering the filter hook more useful.
138
+ * Changed behaviour: Relevanssi now automatically optimizes excerpt creation in long posts. You can still use `relevanssi_optimize_excerpts` for further optimization, but it's probably not necessary.
139
+ * Changed behaviour: The `relevanssi_tag_before_tokenize` filter hook parameters were changed in order to be actually useful and to match what the filter hook is supposed to do.
140
+ * Minor fix: In some cases Relevanssi wouldn't highlight the last word of the title. This is more reliable now.
141
+ * Minor fix: Relevanssi will now add the `highlight` parameter only to search results, and not to other links on the search results page.
142
+ * Minor fix: Improved fringe cases in nested taxonomy queries.
143
+ * Minor fix: Taxonomy terms in WPML were not indexed correctly. Instead of the post language, the current language was used, so if your admin dashboard is in English, German posts would get English translations of the terms, not German. This is now fixed.
144
+ * Minor fix: Excerpt creation is now faster when multiple excerpts are not used.
145
+ * Minor fix: The SEO plugin noindex setting did not actually work. That has been fixed now.
146
+
147
+ = 4.11.1 =
148
+ * Major fix: The type hinting introduced for some functions turned out to be too strict, causing fatal errors. The type hinting has been relaxed (using nullable types would help, but that's a PHP 7.4 feature, and we don't want that).
149
+
150
  = 4.11.0 =
151
  * New feature: New filter hook `relevanssi_rendered_block` filters Gutenberg block content after the block has been rendered with `render_block()`.
152
  * New feature: New filter hook `relevanssi_log_query` can be used to filter the search query before it's logged. This can be used to log instead the query that includes synonyms (available as a parameter to the filter hook).
208
  * Minor fix: The category inclusion and exclusion setting checkboxes on the Searching tab didn't work. The setting was saved, but the checkboxes wouldn't appear.
209
 
210
  == Upgrade notice ==
211
+ = 4.12.0 =
212
+ * New features and bug fixes.
213
+
214
+ = 4.11.1 =
215
+ * Prevents surprising fatal errors.
216
+
217
  = 4.11.0 =
218
  * New filter hooks, bug fixes.
219
 
relevanssi.php CHANGED
@@ -13,7 +13,7 @@
13
  * Plugin Name: Relevanssi
14
  * Plugin URI: https://www.relevanssi.com/
15
  * Description: This plugin replaces WordPress search with a relevance-sorting search.
16
- * Version: 4.11.0
17
  * Author: Mikko Saari
18
  * Author URI: http://www.mikkosaari.fi/
19
  * Text Domain: relevanssi
@@ -67,7 +67,7 @@ $relevanssi_variables['database_version'] = 6;
67
  $relevanssi_variables['file'] = __FILE__;
68
  $relevanssi_variables['plugin_dir'] = plugin_dir_path( __FILE__ );
69
  $relevanssi_variables['plugin_basename'] = plugin_basename( __FILE__ );
70
- $relevanssi_variables['plugin_version'] = '4.11.0';
71
 
72
  require_once 'lib/admin-ajax.php';
73
  require_once 'lib/common.php';
13
  * Plugin Name: Relevanssi
14
  * Plugin URI: https://www.relevanssi.com/
15
  * Description: This plugin replaces WordPress search with a relevance-sorting search.
16
+ * Version: 4.12.0
17
  * Author: Mikko Saari
18
  * Author URI: http://www.mikkosaari.fi/
19
  * Text Domain: relevanssi
67
  $relevanssi_variables['file'] = __FILE__;
68
  $relevanssi_variables['plugin_dir'] = plugin_dir_path( __FILE__ );
69
  $relevanssi_variables['plugin_basename'] = plugin_basename( __FILE__ );
70
+ $relevanssi_variables['plugin_version'] = '4.12.0';
71
 
72
  require_once 'lib/admin-ajax.php';
73
  require_once 'lib/common.php';
relevanssi.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Relevanssi\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2020-01-29 08:09+0200\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: Mikko Saari <mikko@mikkosaari.fi>\n"
8
  "Language-Team: \n"
@@ -12,62 +12,62 @@ msgstr ""
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "X-Poedit-KeywordsList: _e;__;esc_html__;esc_html_e;_n\n"
14
  "X-Poedit-Basepath: .\n"
15
- "X-Generator: Poedit 2.2.4\n"
16
  "X-Poedit-SearchPath-0: .\n"
17
  "X-Poedit-SearchPath-1: lib\n"
18
 
19
- #: lib/admin-ajax.php:89 vendor/lib/admin-ajax.php:89
20
  #, php-format
21
  msgid "Indexed %1$d post (total %2$d), processed %3$d / %4$d."
22
  msgstr ""
23
 
24
- #: lib/admin-ajax.php:212 lib/tabs/indexing-tab.php:127
25
  #: vendor/lib/admin-ajax.php:212 vendor/lib/tabs/indexing-tab.php:125
26
  msgid "Results"
27
  msgstr ""
28
 
29
- #: lib/admin-ajax.php:216 vendor/lib/admin-ajax.php:216
30
  #, php-format
31
  msgid "Found a total of %1$d posts, showing posts %2$d–%3$s."
32
  msgstr ""
33
 
34
- #: lib/admin-ajax.php:218 vendor/lib/admin-ajax.php:218
35
  msgid "Previous page"
36
  msgstr ""
37
 
38
- #: lib/admin-ajax.php:221 vendor/lib/admin-ajax.php:221
39
  msgid "Next page"
40
  msgstr ""
41
 
42
- #: lib/admin-ajax.php:225 vendor/lib/admin-ajax.php:225
43
  msgid "Score:"
44
  msgstr ""
45
 
46
- #: lib/admin-ajax.php:250 vendor/lib/admin-ajax.php:250
47
  msgid "Edit"
48
  msgstr ""
49
 
50
- #: lib/admin-ajax.php:296 vendor/lib/admin-ajax.php:296
51
  msgid "Query variables"
52
  msgstr ""
53
 
54
- #: lib/admin-ajax.php:365 vendor/lib/admin-ajax.php:365
55
  msgid "Filters"
56
  msgstr ""
57
 
58
- #: lib/admin-ajax.php:366 vendor/lib/admin-ajax.php:366
59
  msgid "show"
60
  msgstr ""
61
 
62
- #: lib/admin-ajax.php:367 vendor/lib/admin-ajax.php:367
63
  msgid "hide"
64
  msgstr ""
65
 
66
- #: lib/common.php:1744 vendor/lib/common.php:1601
67
  msgid "25 most common words in the index"
68
  msgstr ""
69
 
70
- #: lib/common.php:1745 vendor/lib/common.php:1602
71
  msgid ""
72
  "These words are excellent stopword material. A word that appears in most of "
73
  "the posts in the database is quite pointless when searching. This is also an "
@@ -77,18 +77,143 @@ msgid ""
77
  "necessary."
78
  msgstr ""
79
 
80
- #: lib/common.php:1751 vendor/lib/common.php:1608
81
  msgid "Stopword Candidates"
82
  msgstr ""
83
 
84
- #: lib/common.php:1756 vendor/lib/common.php:1613
85
  msgid "Add to stopwords"
86
  msgstr ""
87
 
88
- #: lib/common.php:1759 vendor/lib/common.php:1616
89
  msgid "Add to content stopwords"
90
  msgstr ""
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  #: lib/contextual-help.php:24 vendor/lib/contextual-help.php:28
93
  #, php-format
94
  msgid ""
@@ -104,9 +229,8 @@ msgid ""
104
  "effect of enabling the inside-word highlights."
105
  msgstr ""
106
 
107
- #: lib/contextual-help.php:26 lib/tabs/excerpts-tab.php:370
108
- #: vendor/lib/contextual-help.php:35 vendor/lib/tabs/excerpts-tab.php:378
109
- #: vendor/lib/tabs/excerpts-tab.php:387
110
  msgid "Uncheck this if you use non-ASCII characters"
111
  msgstr ""
112
 
@@ -115,7 +239,7 @@ msgstr ""
115
  msgid "In order to adjust the throttle limit, you can use the %s filter hook."
116
  msgstr ""
117
 
118
- #: lib/contextual-help.php:33 lib/interface.php:848
119
  #: lib/tabs/overview-tab.php:56 vendor/lib/contextual-help.php:25
120
  #: vendor/lib/interface.php:831 vendor/lib/tabs/overview-tab.php:56
121
  msgid "Searching"
@@ -236,7 +360,7 @@ msgid ""
236
  "be less than perfect in quality, add a filter that returns true on hook %s."
237
  msgstr ""
238
 
239
- #: lib/contextual-help.php:123 lib/tabs/indexing-tab.php:388
240
  #: vendor/lib/contextual-help.php:97 vendor/lib/tabs/indexing-tab.php:341
241
  msgid "Excerpts"
242
  msgstr ""
@@ -381,40 +505,44 @@ msgstr ""
381
  msgid "WordPress.org forum"
382
  msgstr ""
383
 
384
- #: lib/excerpts-highlights.php:24 vendor/lib/excerpts-highlights.php:24
385
- msgid "There is no excerpt because this is a protected post."
 
 
 
 
386
  msgstr ""
387
 
388
- #: lib/init.php:90 vendor/lib/init.php:88
389
  msgid ""
390
  "You do not have an index! Remember to build the index (click the \"Build the "
391
  "index\" button), otherwise searching won't work."
392
  msgstr ""
393
 
394
- #: lib/init.php:102 vendor/lib/init.php:100
395
  msgid ""
396
  "Multibyte string functions are not available. Relevanssi may not work well "
397
  "without them. Please install (or ask your host to install) the mbstring "
398
  "extension."
399
  msgstr ""
400
 
401
- #: lib/init.php:243 lib/init.php:244 lib/interface.php:482
402
  #: lib/tabs/logging-tab.php:48 vendor/lib/init.php:237 vendor/lib/init.php:238
403
  #: vendor/lib/interface.php:469 vendor/lib/tabs/logging-tab.php:48
404
  msgid "User searches"
405
  msgstr ""
406
 
407
- #: lib/init.php:255 lib/init.php:256 lib/tabs/searching-tab.php:248
408
  #: vendor/lib/init.php:249 vendor/lib/init.php:250
409
  #: vendor/lib/tabs/searching-tab.php:248
410
  msgid "Admin search"
411
  msgstr ""
412
 
413
- #: lib/init.php:447 vendor/lib/init.php:441
414
  msgid "Settings"
415
  msgstr ""
416
 
417
- #: lib/init.php:450 vendor/lib/init.php:444
418
  msgid "Go Premium!"
419
  msgstr ""
420
 
@@ -426,309 +554,309 @@ msgstr ""
426
  msgid "Relevanssi Premium Search Options"
427
  msgstr ""
428
 
429
- #: lib/interface.php:484 vendor/lib/interface.php:471
430
  msgid "Relevanssi User Searches"
431
  msgstr ""
432
 
433
- #: lib/interface.php:507 vendor/lib/interface.php:494
434
  msgid "Enable query logging to see stats here."
435
  msgstr ""
436
 
437
- #: lib/interface.php:519 vendor/lib/interface.php:506
438
  msgid "Admin Search"
439
  msgstr ""
440
 
441
- #: lib/interface.php:549 vendor/lib/interface.php:536
442
  msgid "Logs clear!"
443
  msgstr ""
444
 
445
- #: lib/interface.php:551 vendor/lib/interface.php:538
446
  msgid "Clearing the logs failed."
447
  msgstr ""
448
 
449
- #: lib/interface.php:585 vendor/lib/interface.php:572
450
  msgid "Total Searches"
451
  msgstr ""
452
 
453
- #: lib/interface.php:587 vendor/lib/interface.php:574
454
  msgid "Totals"
455
  msgstr ""
456
 
457
- #: lib/interface.php:591 vendor/lib/interface.php:578
458
  msgid "Common Queries"
459
  msgstr ""
460
 
461
- #: lib/interface.php:601 vendor/lib/interface.php:588
462
  #, php-format
463
  msgid ""
464
  "Here you can see the %d most common user search queries, how many times "
465
  "those queries were made and how many results were found for those queries."
466
  msgstr ""
467
 
468
- #: lib/interface.php:605 lib/interface.php:627 lib/interface.php:676
469
  #: vendor/lib/interface.php:592 vendor/lib/interface.php:614
470
  #: vendor/lib/interface.php:664
471
  msgid "Today and yesterday"
472
  msgstr ""
473
 
474
- #: lib/interface.php:608 lib/interface.php:614 lib/interface.php:619
475
- #: lib/interface.php:636 vendor/lib/interface.php:595
476
  #: vendor/lib/interface.php:601 vendor/lib/interface.php:606
477
  #: vendor/lib/interface.php:623
478
  #, php-format
479
  msgid "Last %d days"
480
  msgstr ""
481
 
482
- #: lib/interface.php:624 vendor/lib/interface.php:611
483
  msgid "Unsuccessful Queries"
484
  msgstr ""
485
 
486
- #: lib/interface.php:631 lib/interface.php:677 vendor/lib/interface.php:618
487
  #: vendor/lib/interface.php:665
488
  msgid "Last 7 days"
489
  msgstr ""
490
 
491
- #: lib/interface.php:642 vendor/lib/interface.php:629
492
  msgid "Reset Logs"
493
  msgstr ""
494
 
495
- #: lib/interface.php:651
496
  msgid ""
497
  "To reset the logs, type \"reset\" into the box here and click the Reset "
498
  "button"
499
  msgstr ""
500
 
501
- #: lib/interface.php:654
502
  msgid "Reset"
503
  msgstr ""
504
 
505
- #: lib/interface.php:678 vendor/lib/interface.php:666
506
  msgid "Last 30 days"
507
  msgstr ""
508
 
509
- #: lib/interface.php:679 vendor/lib/interface.php:667
510
  msgid "Forever"
511
  msgstr ""
512
 
513
- #: lib/interface.php:689 vendor/lib/interface.php:677
514
  msgid "When"
515
  msgstr ""
516
 
517
- #: lib/interface.php:690 vendor/lib/interface.php:678
518
  msgid "Searches"
519
  msgstr ""
520
 
521
- #: lib/interface.php:752 lib/log.php:178 vendor/lib/interface.php:740
522
  #: vendor/lib/log.php:178
523
  msgid "Query"
524
  msgstr ""
525
 
526
- #: lib/interface.php:753 vendor/lib/interface.php:741
527
  msgid "Hits"
528
  msgstr ""
529
 
530
- #: lib/interface.php:845 vendor/lib/interface.php:828
531
  msgid "Overview"
532
  msgstr ""
533
 
534
- #: lib/interface.php:846 lib/tabs/overview-tab.php:44
535
  #: vendor/lib/interface.php:829 vendor/lib/tabs/overview-tab.php:44
536
  msgid "Indexing"
537
  msgstr ""
538
 
539
- #: lib/interface.php:847 vendor/lib/interface.php:830
540
  msgid "Attachments"
541
  msgstr ""
542
 
543
- #: lib/interface.php:849 vendor/lib/interface.php:832
544
  msgid "Logging"
545
  msgstr ""
546
 
547
- #: lib/interface.php:850 lib/tabs/overview-tab.php:60
548
  #: vendor/lib/interface.php:833 vendor/lib/tabs/overview-tab.php:60
549
  msgid "Excerpts and highlights"
550
  msgstr ""
551
 
552
- #: lib/interface.php:851 lib/tabs/synonyms-tab.php:25
553
- #: lib/tabs/synonyms-tab.php:30 vendor/lib/interface.php:834
554
  #: vendor/lib/tabs/synonyms-tab.php:25 vendor/lib/tabs/synonyms-tab.php:30
555
  msgid "Synonyms"
556
  msgstr ""
557
 
558
- #: lib/interface.php:852 lib/tabs/stopwords-tab.php:18
559
  #: vendor/lib/interface.php:835 vendor/lib/tabs/stopwords-tab.php:18
560
  msgid "Stopwords"
561
  msgstr ""
562
 
563
- #: lib/interface.php:853 lib/tabs/redirects-tab.php:18
564
  #: vendor/lib/interface.php:836 vendor/lib/tabs/redirects-tab.php:18
565
  msgid "Redirects"
566
  msgstr ""
567
 
568
- #: lib/interface.php:855 vendor/lib/interface.php:838
569
- msgid "Related"
570
  msgstr ""
571
 
572
- #: lib/interface.php:856 vendor/lib/interface.php:839
573
- msgid "Import / Export options"
574
- msgstr ""
575
-
576
- #: lib/interface.php:975 vendor/lib/interface.php:958
577
  msgid "Click OK to copy Relevanssi options to all subsites"
578
  msgstr ""
579
 
580
- #: lib/interface.php:976 vendor/lib/interface.php:959
581
  msgid "Are you sure you want to remove all stopwords?"
582
  msgstr ""
583
 
584
- #: lib/interface.php:977 vendor/lib/interface.php:960
585
  msgid "Wiping out the index..."
586
  msgstr ""
587
 
588
- #: lib/interface.php:978 vendor/lib/interface.php:961
589
  msgid "Done."
590
  msgstr ""
591
 
592
- #: lib/interface.php:979 vendor/lib/interface.php:962
593
  msgid "Indexing users..."
594
  msgstr ""
595
 
596
- #: lib/interface.php:980 vendor/lib/interface.php:963
597
  msgid "Indexing the following taxonomies:"
598
  msgstr ""
599
 
600
- #: lib/interface.php:981 vendor/lib/interface.php:964
601
  msgid "Indexing attachments..."
602
  msgstr ""
603
 
604
- #: lib/interface.php:982 vendor/lib/interface.php:965
605
  msgid "Counting posts..."
606
  msgstr ""
607
 
608
- #: lib/interface.php:983 vendor/lib/interface.php:966
609
  msgid "Counting taxonomy terms..."
610
  msgstr ""
611
 
612
- #: lib/interface.php:984 vendor/lib/interface.php:967
613
  msgid "Counting users..."
614
  msgstr ""
615
 
616
- #: lib/interface.php:985 vendor/lib/interface.php:968
617
  msgid "Counting attachments..."
618
  msgstr ""
619
 
620
- #: lib/interface.php:986 vendor/lib/interface.php:969
621
  msgid "posts found."
622
  msgstr ""
623
 
624
- #: lib/interface.php:987 vendor/lib/interface.php:970
625
  msgid "taxonomy terms found."
626
  msgstr ""
627
 
628
- #: lib/interface.php:988 vendor/lib/interface.php:971
629
  msgid "users found."
630
  msgstr ""
631
 
632
- #: lib/interface.php:989 vendor/lib/interface.php:972
633
  msgid "attachments found."
634
  msgstr ""
635
 
636
- #: lib/interface.php:990 vendor/lib/interface.php:973
637
  msgid "Taxonomy term indexing is disabled."
638
  msgstr ""
639
 
640
- #: lib/interface.php:991 vendor/lib/interface.php:974
641
  msgid "User indexing is disabled."
642
  msgstr ""
643
 
644
- #: lib/interface.php:992 vendor/lib/interface.php:975
645
  msgid "Indexing complete."
646
  msgstr ""
647
 
648
- #: lib/interface.php:993 vendor/lib/interface.php:976
649
  msgid "posts excluded."
650
  msgstr ""
651
 
652
- #: lib/interface.php:994 vendor/lib/interface.php:977
653
  msgid "Settings have changed, please save the options before indexing."
654
  msgstr ""
655
 
656
- #: lib/interface.php:995 vendor/lib/interface.php:978
657
  msgid "Reload the page to refresh the state of the index."
658
  msgstr ""
659
 
660
- #: lib/interface.php:996 vendor/lib/interface.php:979
661
  msgid "Are you sure you want to delete all attachment content from the index?"
662
  msgstr ""
663
 
664
- #: lib/interface.php:997 vendor/lib/interface.php:980
665
  msgid "Relevanssi attachment data wiped clean."
666
  msgstr ""
667
 
668
- #: lib/interface.php:998
669
  msgid "There were problems wiping the Relevanssi attachment data clean."
670
  msgstr ""
671
 
672
- #: lib/interface.php:999 vendor/lib/interface.php:981
673
  msgid "hour"
674
  msgstr ""
675
 
676
- #: lib/interface.php:1000 vendor/lib/interface.php:982
677
  msgid "hours"
678
  msgstr ""
679
 
680
- #: lib/interface.php:1001 vendor/lib/interface.php:983
681
  msgid "about"
682
  msgstr ""
683
 
684
- #: lib/interface.php:1002 vendor/lib/interface.php:984
685
  msgid "about an hour"
686
  msgstr ""
687
 
688
- #: lib/interface.php:1003 vendor/lib/interface.php:985
689
  msgid "about an hour and a half"
690
  msgstr ""
691
 
692
- #: lib/interface.php:1004 vendor/lib/interface.php:986
693
  msgid "minute"
694
  msgstr ""
695
 
696
- #: lib/interface.php:1005 vendor/lib/interface.php:987
697
  msgid "minutes"
698
  msgstr ""
699
 
700
- #: lib/interface.php:1006 vendor/lib/interface.php:988
701
  msgid "less than a minute"
702
  msgstr ""
703
 
704
- #: lib/interface.php:1007 vendor/lib/interface.php:989
705
  msgid "we're done!"
706
  msgstr ""
707
 
708
- #: lib/interface.php:1074 vendor/lib/interface.php:1056
709
  msgid "Tag weight"
710
  msgstr ""
711
 
712
- #: lib/interface.php:1082 vendor/lib/interface.php:1064
713
  msgid "Category weight"
714
  msgstr ""
715
 
716
- #: lib/log.php:171 vendor/lib/log.php:171
717
- msgid "Logged seaches"
718
  msgstr ""
719
 
720
- #: lib/log.php:174 vendor/lib/log.php:174
721
  msgid "Time"
722
  msgstr ""
723
 
724
- #: lib/log.php:182 vendor/lib/log.php:182
725
  msgid "Hits found"
726
  msgstr ""
727
 
728
- #: lib/log.php:186 vendor/lib/log.php:186
729
  msgid "IP address"
730
  msgstr ""
731
 
 
 
 
 
732
  #: lib/privacy.php:34 vendor/lib/privacy.php:34
733
  msgid "What personal data we collect and why we collect it"
734
  msgstr ""
@@ -771,7 +899,7 @@ msgstr ""
771
  msgid "Relevanssi Search Logs"
772
  msgstr ""
773
 
774
- #: lib/shortcodes.php:131 vendor/lib/shortcodes.php:131
775
  msgid "None"
776
  msgstr ""
777
 
@@ -792,35 +920,35 @@ msgstr ""
792
  msgid "Added stopwords from the stopword file."
793
  msgstr ""
794
 
795
- #: lib/stopwords.php:134 vendor/lib/stopwords.php:96
796
  #, php-format
797
  msgid "Successfully added %1$d/%2$d terms to stopwords!"
798
  msgstr ""
799
 
800
- #: lib/stopwords.php:153 vendor/lib/stopwords.php:107
801
  #, php-format
802
  msgid "Term '%s' added to stopwords!"
803
  msgstr ""
804
 
805
- #: lib/stopwords.php:162 vendor/lib/stopwords.php:110
806
  #, php-format
807
  msgid "Couldn't add term '%s' to stopwords!"
808
  msgstr ""
809
 
810
- #: lib/stopwords.php:232 vendor/lib/stopwords.php:162
811
  msgid "All stopwords removed! Remember to re-index."
812
  msgstr ""
813
 
814
- #: lib/stopwords.php:240 vendor/lib/stopwords.php:164
815
  msgid "There was a problem, and stopwords couldn't be removed."
816
  msgstr ""
817
 
818
- #: lib/stopwords.php:284 vendor/lib/stopwords.php:187
819
  #, php-format
820
  msgid "Term '%s' removed from stopwords! Re-index to get it back to index."
821
  msgstr ""
822
 
823
- #: lib/stopwords.php:297 vendor/lib/stopwords.php:193
824
  #, php-format
825
  msgid "Couldn't remove term '%s' from stopwords!"
826
  msgstr ""
@@ -845,6 +973,23 @@ msgid ""
845
  "Relevanssi Premium here%2$s."
846
  msgstr ""
847
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
848
  #: lib/tabs/excerpts-tab.php:84 vendor/lib/tabs/excerpts-tab.php:84
849
  msgid "Custom excerpts/snippets"
850
  msgstr ""
@@ -892,120 +1037,120 @@ msgid ""
892
  "have a really good reason and your posts are short."
893
  msgstr ""
894
 
895
- #: lib/tabs/excerpts-tab.php:147 vendor/lib/tabs/excerpts-tab.php:150
896
  msgid "Allowable tags in excerpts"
897
  msgstr ""
898
 
899
- #: lib/tabs/excerpts-tab.php:157 vendor/lib/tabs/excerpts-tab.php:160
900
  msgid ""
901
  "List all tags you want to allow in excerpts. For example: &lt;p&gt;&lt;a&gt;"
902
  "&lt;strong&gt;."
903
  msgstr ""
904
 
905
- #: lib/tabs/excerpts-tab.php:168 vendor/lib/tabs/excerpts-tab.php:171
906
  msgid "Use custom fields for excerpts"
907
  msgstr ""
908
 
909
- #: lib/tabs/excerpts-tab.php:179 vendor/lib/tabs/excerpts-tab.php:175
910
  #: vendor/lib/tabs/excerpts-tab.php:184
911
  msgid "Use custom field content for building excerpts"
912
  msgstr ""
913
 
914
- #: lib/tabs/excerpts-tab.php:181 vendor/lib/tabs/excerpts-tab.php:187
915
  msgid ""
916
  "Use the custom fields setting for indexing for excerpt-making as well. "
917
  "Enabling this option will show custom field content in Relevanssi-generated "
918
  "excerpts."
919
  msgstr ""
920
 
921
- #: lib/tabs/excerpts-tab.php:184 vendor/lib/tabs/excerpts-tab.php:190
922
  msgid "Enable this option to use PDF content for excerpts."
923
  msgstr ""
924
 
925
- #: lib/tabs/excerpts-tab.php:189 vendor/lib/tabs/excerpts-tab.php:195
926
  msgid "Current custom field setting"
927
  msgstr ""
928
 
929
- #: lib/tabs/excerpts-tab.php:192 vendor/lib/tabs/excerpts-tab.php:198
930
  msgid "all visible custom fields"
931
  msgstr ""
932
 
933
- #: lib/tabs/excerpts-tab.php:194 vendor/lib/tabs/excerpts-tab.php:200
934
  msgid "all custom fields"
935
  msgstr ""
936
 
937
- #: lib/tabs/excerpts-tab.php:198 vendor/lib/tabs/excerpts-tab.php:204
938
  msgid "Just PDF content"
939
  msgstr ""
940
 
941
- #: lib/tabs/excerpts-tab.php:200 vendor/lib/tabs/excerpts-tab.php:206
942
  msgid "None selected"
943
  msgstr ""
944
 
945
- #: lib/tabs/excerpts-tab.php:208 vendor/lib/tabs/excerpts-tab.php:214
946
  msgid "Search hit highlighting"
947
  msgstr ""
948
 
949
- #: lib/tabs/excerpts-tab.php:219 vendor/lib/tabs/excerpts-tab.php:225
950
  msgid "Highlight type"
951
  msgstr ""
952
 
953
- #: lib/tabs/excerpts-tab.php:229 vendor/lib/tabs/excerpts-tab.php:235
954
  msgid "No highlighting"
955
  msgstr ""
956
 
957
- #: lib/tabs/excerpts-tab.php:233 lib/tabs/excerpts-tab.php:243
958
  #: vendor/lib/tabs/excerpts-tab.php:239 vendor/lib/tabs/excerpts-tab.php:249
959
  msgid "Text color"
960
  msgstr ""
961
 
962
- #: lib/tabs/excerpts-tab.php:234 lib/tabs/excerpts-tab.php:257
963
  #: vendor/lib/tabs/excerpts-tab.php:240 vendor/lib/tabs/excerpts-tab.php:263
964
  msgid "Background color"
965
  msgstr ""
966
 
967
- #: lib/tabs/excerpts-tab.php:235 vendor/lib/tabs/excerpts-tab.php:241
968
  msgid "CSS Style"
969
  msgstr ""
970
 
971
- #: lib/tabs/excerpts-tab.php:236 vendor/lib/tabs/excerpts-tab.php:242
972
  msgid "CSS Class"
973
  msgstr ""
974
 
975
- #: lib/tabs/excerpts-tab.php:238 lib/tabs/excerpts-tab.php:401
976
  #: vendor/lib/tabs/excerpts-tab.php:244 vendor/lib/tabs/excerpts-tab.php:422
977
  msgid "Requires custom snippets to work."
978
  msgstr ""
979
 
980
- #: lib/tabs/excerpts-tab.php:271 vendor/lib/tabs/excerpts-tab.php:277
981
  msgid "CSS style for highlights"
982
  msgstr ""
983
 
984
- #: lib/tabs/excerpts-tab.php:282 vendor/lib/tabs/excerpts-tab.php:288
985
  #, php-format
986
  msgid ""
987
  "The highlights will be wrapped in a %s with this CSS in the style parameter."
988
  msgstr ""
989
 
990
- #: lib/tabs/excerpts-tab.php:287 vendor/lib/tabs/excerpts-tab.php:293
991
  msgid "CSS class for highlights"
992
  msgstr ""
993
 
994
- #: lib/tabs/excerpts-tab.php:298 vendor/lib/tabs/excerpts-tab.php:304
995
  #, php-format
996
  msgid "The highlights will be wrapped in a %s with this class."
997
  msgstr ""
998
 
999
- #: lib/tabs/excerpts-tab.php:303 vendor/lib/tabs/excerpts-tab.php:309
1000
  msgid "Highlight in titles"
1001
  msgstr ""
1002
 
1003
- #: lib/tabs/excerpts-tab.php:314 vendor/lib/tabs/excerpts-tab.php:313
1004
  #: vendor/lib/tabs/excerpts-tab.php:322
1005
  msgid "Highlight query terms in titles"
1006
  msgstr ""
1007
 
1008
- #: lib/tabs/excerpts-tab.php:317 vendor/lib/tabs/excerpts-tab.php:326
1009
  #, php-format
1010
  msgid ""
1011
  "Highlights in titles require changes to the search results template. You "
@@ -1013,16 +1158,16 @@ msgid ""
1013
  "information, see the contextual help."
1014
  msgstr ""
1015
 
1016
- #: lib/tabs/excerpts-tab.php:322 vendor/lib/tabs/excerpts-tab.php:331
1017
  msgid "Highlight in documents"
1018
  msgstr ""
1019
 
1020
- #: lib/tabs/excerpts-tab.php:333 vendor/lib/tabs/excerpts-tab.php:335
1021
  #: vendor/lib/tabs/excerpts-tab.php:344
1022
  msgid "Highlight query terms in documents"
1023
  msgstr ""
1024
 
1025
- #: lib/tabs/excerpts-tab.php:336 vendor/lib/tabs/excerpts-tab.php:348
1026
  #, php-format
1027
  msgid ""
1028
  "Highlights hits when user opens the post from search results. This requires "
@@ -1030,47 +1175,51 @@ msgid ""
1030
  "Relevanssi should add automatically."
1031
  msgstr ""
1032
 
1033
- #: lib/tabs/excerpts-tab.php:341 vendor/lib/tabs/excerpts-tab.php:353
1034
  msgid "Highlight in comments"
1035
  msgstr ""
1036
 
1037
- #: lib/tabs/excerpts-tab.php:352 vendor/lib/tabs/excerpts-tab.php:357
1038
  #: vendor/lib/tabs/excerpts-tab.php:366
1039
  msgid "Highlight query terms in comments"
1040
  msgstr ""
1041
 
1042
- #: lib/tabs/excerpts-tab.php:354 vendor/lib/tabs/excerpts-tab.php:369
1043
  msgid ""
1044
  "Highlights hits in comments when user opens the post from search results."
1045
  msgstr ""
1046
 
1047
- #: lib/tabs/excerpts-tab.php:359 vendor/lib/tabs/excerpts-tab.php:374
1048
- msgid "Highlighting problems with non-ASCII alphabet?"
 
 
 
 
1049
  msgstr ""
1050
 
1051
- #: lib/tabs/excerpts-tab.php:372 vendor/lib/tabs/excerpts-tab.php:390
1052
  msgid ""
1053
- "If you use non-ASCII characters (like Cyrillic alphabet) and the highlights "
1054
- "don't work, unchecking this option may make the highlights work."
1055
  msgstr ""
1056
 
1057
- #: lib/tabs/excerpts-tab.php:377 vendor/lib/tabs/excerpts-tab.php:395
1058
  msgid "Breakdown of search results"
1059
  msgstr ""
1060
 
1061
- #: lib/tabs/excerpts-tab.php:388 vendor/lib/tabs/excerpts-tab.php:406
1062
  msgid "Breakdown of search hits in excerpts"
1063
  msgstr ""
1064
 
1065
- #: lib/tabs/excerpts-tab.php:399 vendor/lib/tabs/excerpts-tab.php:419
1066
  msgid "Show the breakdown of search hits in the excerpts."
1067
  msgstr ""
1068
 
1069
- #: lib/tabs/excerpts-tab.php:406 vendor/lib/tabs/excerpts-tab.php:427
1070
  msgid "The breakdown format"
1071
  msgstr ""
1072
 
1073
- #: lib/tabs/excerpts-tab.php:416
1074
  msgid ""
1075
  "Use %body%, %title%, %categories%, %tags%, %taxonomies%, %comments%, "
1076
  "%customfields%, %author%, %excerpt% and %mysqlcolumns% to display the number "
@@ -1079,43 +1228,43 @@ msgid ""
1079
  "term got."
1080
  msgstr ""
1081
 
1082
- #: lib/tabs/indexing-tab.php:114 vendor/lib/tabs/indexing-tab.php:112
1083
  #, php-format
1084
  msgid "%s empties the existing index and rebuilds it from scratch."
1085
  msgstr ""
1086
 
1087
- #: lib/tabs/indexing-tab.php:114 vendor/lib/tabs/indexing-tab.php:112
1088
  msgid "Build the index"
1089
  msgstr ""
1090
 
1091
- #: lib/tabs/indexing-tab.php:116 vendor/lib/tabs/indexing-tab.php:114
1092
  #, php-format
1093
  msgid ""
1094
  "%s doesn't empty the index and only indexes those posts that are not "
1095
  "indexed. You can use it if you have to interrupt building the index."
1096
  msgstr ""
1097
 
1098
- #: lib/tabs/indexing-tab.php:116 vendor/lib/tabs/indexing-tab.php:114
1099
  msgid "Index unindexed posts"
1100
  msgstr ""
1101
 
1102
- #: lib/tabs/indexing-tab.php:119 vendor/lib/tabs/indexing-tab.php:117
1103
  msgid "This doesn't index any taxonomy terms or users."
1104
  msgstr ""
1105
 
1106
- #: lib/tabs/indexing-tab.php:126 vendor/lib/tabs/indexing-tab.php:124
1107
  msgid "Time elapsed"
1108
  msgstr ""
1109
 
1110
- #: lib/tabs/indexing-tab.php:126 vendor/lib/tabs/indexing-tab.php:124
1111
  msgid "Time remaining"
1112
  msgstr ""
1113
 
1114
- #: lib/tabs/indexing-tab.php:126 vendor/lib/tabs/indexing-tab.php:124
1115
  msgid "some time"
1116
  msgstr ""
1117
 
1118
- #: lib/tabs/indexing-tab.php:128 vendor/lib/tabs/indexing-tab.php:126
1119
  msgid ""
1120
  "Indexing should respond quickly. If nothing happens in couple of minutes, "
1121
  "it's probably stuck. The most common reasons for indexing issues are "
@@ -1125,358 +1274,357 @@ msgid ""
1125
  "version of the Relevanssi scripts."
1126
  msgstr ""
1127
 
1128
- #: lib/tabs/indexing-tab.php:132 vendor/lib/tabs/indexing-tab.php:130
1129
  msgid "State of the index"
1130
  msgstr ""
1131
 
1132
- #: lib/tabs/indexing-tab.php:133 vendor/lib/tabs/indexing-tab.php:131
1133
  msgid "document in the index."
1134
  msgstr ""
1135
 
1136
- #: lib/tabs/indexing-tab.php:135 vendor/lib/tabs/indexing-tab.php:133
1137
  msgid "user in the index."
1138
  msgstr ""
1139
 
1140
- #: lib/tabs/indexing-tab.php:136 vendor/lib/tabs/indexing-tab.php:134
1141
  msgid "taxonomy term in the index."
1142
  msgstr ""
1143
 
1144
- #: lib/tabs/indexing-tab.php:139 vendor/lib/tabs/indexing-tab.php:137
1145
  msgid "term in the index."
1146
  msgstr ""
1147
 
1148
- #: lib/tabs/indexing-tab.php:140 vendor/lib/tabs/indexing-tab.php:138
1149
  msgid "is the lowest post ID indexed."
1150
  msgstr ""
1151
 
1152
- #: lib/tabs/indexing-tab.php:150 vendor/lib/tabs/indexing-tab.php:148
 
 
 
 
 
 
 
1153
  msgid ""
1154
  "WARNING: You've chosen no post types to index. Nothing will be indexed. "
1155
  "Choose some post types to index."
1156
  msgstr ""
1157
 
1158
- #: lib/tabs/indexing-tab.php:155 vendor/lib/tabs/indexing-tab.php:153
1159
  msgid "Indexing options"
1160
  msgstr ""
1161
 
1162
- #: lib/tabs/indexing-tab.php:157 vendor/lib/tabs/indexing-tab.php:155
1163
  msgid ""
1164
  "Any changes to the settings on this page require reindexing before they take "
1165
  "effect."
1166
  msgstr ""
1167
 
1168
- #: lib/tabs/indexing-tab.php:161 vendor/lib/tabs/indexing-tab.php:159
1169
  msgid "Post types"
1170
  msgstr ""
1171
 
1172
- #: lib/tabs/indexing-tab.php:165
1173
  msgid "Post types to index"
1174
  msgstr ""
1175
 
1176
- #: lib/tabs/indexing-tab.php:169 vendor/lib/tabs/indexing-tab.php:165
1177
  msgid "Type"
1178
  msgstr ""
1179
 
1180
- #: lib/tabs/indexing-tab.php:170 lib/tabs/indexing-tab.php:262
1181
  #: vendor/lib/tabs/indexing-tab.php:166 vendor/lib/tabs/indexing-tab.php:226
1182
  msgid "Index"
1183
  msgstr ""
1184
 
1185
- #: lib/tabs/indexing-tab.php:171 vendor/lib/tabs/indexing-tab.php:167
1186
  msgid "Excluded from search?"
1187
  msgstr ""
1188
 
1189
- #: lib/tabs/indexing-tab.php:188
1190
  #, php-format
1191
  msgid "Index post type %s"
1192
  msgstr ""
1193
 
1194
- #: lib/tabs/indexing-tab.php:190 lib/tabs/indexing-tab.php:284
1195
  #: vendor/lib/tabs/indexing-tab.php:184 vendor/lib/tabs/indexing-tab.php:244
1196
  msgid "yes"
1197
  msgstr ""
1198
 
1199
- #: lib/tabs/indexing-tab.php:192
1200
  #, php-format
1201
  msgid "Post type %s is excluded from search"
1202
  msgstr ""
1203
 
1204
- #: lib/tabs/indexing-tab.php:194 lib/tabs/indexing-tab.php:280
1205
  #: vendor/lib/tabs/indexing-tab.php:186 vendor/lib/tabs/indexing-tab.php:242
1206
  msgid "no"
1207
  msgstr ""
1208
 
1209
- #: lib/tabs/indexing-tab.php:196
1210
  #, php-format
1211
  msgid "Post type %s can be searched"
1212
  msgstr ""
1213
 
1214
- #: lib/tabs/indexing-tab.php:227 vendor/lib/tabs/indexing-tab.php:212
1215
  msgid ""
1216
  "If you want to index a post type that's marked 'Excluded from search', you "
1217
  "can do that without worrying about it – but you need to uncheck the 'Respect "
1218
  "exclude_from_search' setting from the Searching tab."
1219
  msgstr ""
1220
 
1221
- #: lib/tabs/indexing-tab.php:239
1222
  msgid "Index image files"
1223
  msgstr ""
1224
 
1225
- #: lib/tabs/indexing-tab.php:244
1226
  msgid "Index image attachments"
1227
  msgstr ""
1228
 
1229
- #: lib/tabs/indexing-tab.php:246
1230
  msgid ""
1231
  "If this option is enabled, Relevanssi will include image attachments in the "
1232
  "index. If the option is disabled, only other attachment types are included."
1233
  msgstr ""
1234
 
1235
- #: lib/tabs/indexing-tab.php:248
1236
  #, php-format
1237
  msgid ""
1238
  "For more detailed control over the attachment type indexing, see "
1239
  "%1$sControlling attachment types in the Knowledge base%2$s."
1240
  msgstr ""
1241
 
1242
- #: lib/tabs/indexing-tab.php:254 vendor/lib/tabs/indexing-tab.php:218
1243
  msgid "Taxonomies"
1244
  msgstr ""
1245
 
1246
- #: lib/tabs/indexing-tab.php:261 vendor/lib/tabs/indexing-tab.php:225
1247
  msgid "Taxonomy"
1248
  msgstr ""
1249
 
1250
- #: lib/tabs/indexing-tab.php:263 vendor/lib/tabs/indexing-tab.php:227
1251
  msgid "Public?"
1252
  msgstr ""
1253
 
1254
- #: lib/tabs/indexing-tab.php:279
1255
  #, php-format
1256
  msgid "Index taxonomy %s"
1257
  msgstr ""
1258
 
1259
- #: lib/tabs/indexing-tab.php:282
1260
  #, php-format
1261
  msgid "Taxonomy %s is not public"
1262
  msgstr ""
1263
 
1264
- #: lib/tabs/indexing-tab.php:286
1265
  #, php-format
1266
  msgid "Taxonomy %s is public"
1267
  msgstr ""
1268
 
1269
- #: lib/tabs/indexing-tab.php:308 vendor/lib/tabs/indexing-tab.php:258
1270
  msgid ""
1271
  "If you check a taxonomy here, the terms for that taxonomy are indexed with "
1272
  "the posts. If you for example choose \"post_tag\", searching for a tag will "
1273
  "find all posts that have the tag."
1274
  msgstr ""
1275
 
1276
- #: lib/tabs/indexing-tab.php:315 vendor/lib/tabs/indexing-tab.php:265
1277
- msgid "Comments"
1278
- msgstr ""
1279
-
1280
- #: lib/tabs/indexing-tab.php:319 lib/tabs/indexing-tab.php:333
1281
  #: vendor/lib/tabs/indexing-tab.php:269 vendor/lib/tabs/indexing-tab.php:283
1282
  msgid "none"
1283
  msgstr ""
1284
 
1285
- #: lib/tabs/indexing-tab.php:320 vendor/lib/tabs/indexing-tab.php:270
1286
  msgid "comments"
1287
  msgstr ""
1288
 
1289
- #: lib/tabs/indexing-tab.php:321 vendor/lib/tabs/indexing-tab.php:271
1290
  msgid "comments and pingbacks"
1291
  msgstr ""
1292
 
1293
- #: lib/tabs/indexing-tab.php:323 vendor/lib/tabs/indexing-tab.php:273
1294
  msgid ""
1295
  "If you choose to index comments, you can choose if you want to index just "
1296
  "comments, or everything including comments and track- and pingbacks."
1297
  msgstr ""
1298
 
1299
- #: lib/tabs/indexing-tab.php:329 vendor/lib/tabs/indexing-tab.php:279
1300
- msgid "Custom fields"
1301
- msgstr ""
1302
-
1303
- #: lib/tabs/indexing-tab.php:334 vendor/lib/tabs/indexing-tab.php:284
1304
  msgid "all"
1305
  msgstr ""
1306
 
1307
- #: lib/tabs/indexing-tab.php:335 vendor/lib/tabs/indexing-tab.php:285
1308
  msgid "visible"
1309
  msgstr ""
1310
 
1311
- #: lib/tabs/indexing-tab.php:336 lib/tabs/indexing-tab.php:368
1312
  #: vendor/lib/tabs/indexing-tab.php:286 vendor/lib/tabs/indexing-tab.php:318
1313
  msgid "some"
1314
  msgstr ""
1315
 
1316
- #: lib/tabs/indexing-tab.php:340 vendor/lib/tabs/indexing-tab.php:290
1317
  msgid "'All' indexes all custom fields for posts."
1318
  msgstr ""
1319
 
1320
- #: lib/tabs/indexing-tab.php:342 vendor/lib/tabs/indexing-tab.php:292
1321
  msgid ""
1322
  "'Visible' only includes the custom fields that are visible in the user "
1323
  "interface (with names that don't start with an underscore)."
1324
  msgstr ""
1325
 
1326
- #: lib/tabs/indexing-tab.php:344 vendor/lib/tabs/indexing-tab.php:294
1327
  msgid "'Some' lets you choose individual custom fields to index."
1328
  msgstr ""
1329
 
1330
- #: lib/tabs/indexing-tab.php:350 vendor/lib/tabs/indexing-tab.php:300
1331
  msgid ""
1332
  "Advanced Custom Fields has lots of invisible custom fields with meta data. "
1333
  "Selecting \"all\" will include lots of garbage in the index and excerpts. "
1334
  "\"Visible\" is usually a better option with ACF."
1335
  msgstr ""
1336
 
1337
- #: lib/tabs/indexing-tab.php:361 vendor/lib/tabs/indexing-tab.php:311
1338
  msgid "Custom fields to index"
1339
  msgstr ""
1340
 
1341
- #: lib/tabs/indexing-tab.php:363 vendor/lib/tabs/indexing-tab.php:313
1342
  msgid ""
1343
  "Enter a comma-separated list of custom fields to include in the index. With "
1344
  "Relevanssi Premium, you can also use 'fieldname_%_subfieldname' notation for "
1345
  "ACF repeater fields."
1346
  msgstr ""
1347
 
1348
- #: lib/tabs/indexing-tab.php:364 vendor/lib/tabs/indexing-tab.php:314
1349
  msgid ""
1350
  "You can use 'relevanssi_index_custom_fields' filter hook to adjust which "
1351
  "custom fields are indexed."
1352
  msgstr ""
1353
 
1354
- #: lib/tabs/indexing-tab.php:368 vendor/lib/tabs/indexing-tab.php:318
1355
  #, php-format
1356
  msgid ""
1357
  "If you want the SKU included, choose %1$s and enter %2$s. Also see the "
1358
  "contextual help for more details."
1359
  msgstr ""
1360
 
1361
- #: lib/tabs/indexing-tab.php:375 vendor/lib/tabs/indexing-tab.php:325
1362
  msgid "Author display names"
1363
  msgstr ""
1364
 
1365
- #: lib/tabs/indexing-tab.php:380 vendor/lib/tabs/indexing-tab.php:329
1366
  #: vendor/lib/tabs/indexing-tab.php:332
1367
  msgid "Index the post author display name"
1368
  msgstr ""
1369
 
1370
- #: lib/tabs/indexing-tab.php:382 vendor/lib/tabs/indexing-tab.php:334
1371
  msgid ""
1372
  "Searching for the post author display name will return posts by that author."
1373
  msgstr ""
1374
 
1375
- #: lib/tabs/indexing-tab.php:393 vendor/lib/tabs/indexing-tab.php:345
1376
  #: vendor/lib/tabs/indexing-tab.php:348 vendor/lib/tabs/indexing-tab.php:369
1377
  msgid "Index the post excerpt"
1378
  msgstr ""
1379
 
1380
- #: lib/tabs/indexing-tab.php:395 vendor/lib/tabs/indexing-tab.php:350
1381
  msgid "Relevanssi will find posts by the content in the excerpt."
1382
  msgstr ""
1383
 
1384
- #: lib/tabs/indexing-tab.php:397 vendor/lib/tabs/indexing-tab.php:352
1385
  msgid ""
1386
  "WooCommerce stores the product short description in the excerpt, so it's a "
1387
  "good idea to index excerpts."
1388
  msgstr ""
1389
 
1390
- #: lib/tabs/indexing-tab.php:404 vendor/lib/tabs/indexing-tab.php:360
1391
  msgid "Shortcodes"
1392
  msgstr ""
1393
 
1394
- #: lib/tabs/indexing-tab.php:409 vendor/lib/tabs/indexing-tab.php:365
1395
  msgid "Expand shortcodes"
1396
  msgstr ""
1397
 
1398
- #: lib/tabs/indexing-tab.php:414 vendor/lib/tabs/indexing-tab.php:372
1399
  msgid "Expand shortcodes when indexing"
1400
  msgstr ""
1401
 
1402
- #: lib/tabs/indexing-tab.php:417 vendor/lib/tabs/indexing-tab.php:375
1403
  msgid ""
1404
  "WooCommerce has shortcodes that don't work well with Relevanssi. With "
1405
  "WooCommerce, make sure the option is disabled."
1406
  msgstr ""
1407
 
1408
- #: lib/tabs/indexing-tab.php:419 vendor/lib/tabs/indexing-tab.php:377
1409
  msgid ""
1410
  "If checked, Relevanssi will expand shortcodes in post content before "
1411
  "indexing. Otherwise shortcodes will be stripped."
1412
  msgstr ""
1413
 
1414
- #: lib/tabs/indexing-tab.php:420 vendor/lib/tabs/indexing-tab.php:378
1415
  msgid ""
1416
  "If you use shortcodes to include dynamic content, Relevanssi will not keep "
1417
  "the index updated, the index will reflect the status of the shortcode "
1418
  "content at the moment of indexing."
1419
  msgstr ""
1420
 
1421
- #: lib/tabs/indexing-tab.php:450 vendor/lib/tabs/indexing-tab.php:409
1422
  msgid "Advanced indexing settings"
1423
  msgstr ""
1424
 
1425
- #: lib/tabs/indexing-tab.php:452 vendor/lib/tabs/indexing-tab.php:411
1426
  msgid "Show advanced settings"
1427
  msgstr ""
1428
 
1429
- #: lib/tabs/indexing-tab.php:457 vendor/lib/tabs/indexing-tab.php:416
1430
  msgid "Minimum word length"
1431
  msgstr ""
1432
 
1433
- #: lib/tabs/indexing-tab.php:461 vendor/lib/tabs/indexing-tab.php:420
1434
  msgid "Words shorter than this many letters will not be indexed."
1435
  msgstr ""
1436
 
1437
- #: lib/tabs/indexing-tab.php:463 vendor/lib/tabs/indexing-tab.php:422
1438
  #, php-format
1439
  msgid ""
1440
  "To enable one-letter searches, you need to add a filter function on the "
1441
  "filter hook %1$s that returns %2$s."
1442
  msgstr ""
1443
 
1444
- #: lib/tabs/indexing-tab.php:467 vendor/lib/tabs/indexing-tab.php:426
1445
  msgid "Punctuation control"
1446
  msgstr ""
1447
 
1448
- #: lib/tabs/indexing-tab.php:468 vendor/lib/tabs/indexing-tab.php:427
1449
  msgid ""
1450
  "Here you can adjust how the punctuation is controlled. For more information, "
1451
  "see help. Remember that any changes here require reindexing, otherwise "
1452
  "searches will fail to find posts they should."
1453
  msgstr ""
1454
 
1455
- #: lib/tabs/indexing-tab.php:472 vendor/lib/tabs/indexing-tab.php:431
1456
  msgid "Hyphens and dashes"
1457
  msgstr ""
1458
 
1459
- #: lib/tabs/indexing-tab.php:476 lib/tabs/indexing-tab.php:503
1460
- #: lib/tabs/indexing-tab.php:517 vendor/lib/tabs/indexing-tab.php:435
1461
  #: vendor/lib/tabs/indexing-tab.php:462 vendor/lib/tabs/indexing-tab.php:476
1462
  msgid "Keep"
1463
  msgstr ""
1464
 
1465
- #: lib/tabs/indexing-tab.php:477 lib/tabs/indexing-tab.php:490
1466
- #: lib/tabs/indexing-tab.php:504 lib/tabs/indexing-tab.php:518
1467
  #: vendor/lib/tabs/indexing-tab.php:436 vendor/lib/tabs/indexing-tab.php:449
1468
  #: vendor/lib/tabs/indexing-tab.php:463 vendor/lib/tabs/indexing-tab.php:477
1469
  msgid "Replace with spaces"
1470
  msgstr ""
1471
 
1472
- #: lib/tabs/indexing-tab.php:478 lib/tabs/indexing-tab.php:491
1473
- #: lib/tabs/indexing-tab.php:505 lib/tabs/indexing-tab.php:519
1474
  #: vendor/lib/tabs/indexing-tab.php:437 vendor/lib/tabs/indexing-tab.php:450
1475
  #: vendor/lib/tabs/indexing-tab.php:464 vendor/lib/tabs/indexing-tab.php:478
1476
  msgid "Remove"
1477
  msgstr ""
1478
 
1479
- #: lib/tabs/indexing-tab.php:480 vendor/lib/tabs/indexing-tab.php:439
1480
  msgid ""
1481
  "How Relevanssi should handle hyphens and dashes (en and em dashes)? "
1482
  "Replacing with spaces is generally the best option, but in some cases "
@@ -1484,40 +1632,40 @@ msgid ""
1484
  "option."
1485
  msgstr ""
1486
 
1487
- #: lib/tabs/indexing-tab.php:486 vendor/lib/tabs/indexing-tab.php:445
1488
  msgid "Apostrophes and quotes"
1489
  msgstr ""
1490
 
1491
- #: lib/tabs/indexing-tab.php:493 vendor/lib/tabs/indexing-tab.php:452
1492
  msgid ""
1493
  "How Relevanssi should handle apostrophes and quotes? It's not possible to "
1494
  "keep them; that would lead to problems. Default behaviour is to replace with "
1495
  "spaces, but sometimes removing makes sense."
1496
  msgstr ""
1497
 
1498
- #: lib/tabs/indexing-tab.php:499 vendor/lib/tabs/indexing-tab.php:458
1499
  msgid "Ampersands"
1500
  msgstr ""
1501
 
1502
- #: lib/tabs/indexing-tab.php:507 vendor/lib/tabs/indexing-tab.php:466
1503
  msgid ""
1504
  "How Relevanssi should handle ampersands? Replacing with spaces is generally "
1505
  "the best option, but if you talk a lot about D&amp;D, for example, keeping "
1506
  "the ampersands is useful."
1507
  msgstr ""
1508
 
1509
- #: lib/tabs/indexing-tab.php:513 vendor/lib/tabs/indexing-tab.php:472
1510
  msgid "Decimal separators"
1511
  msgstr ""
1512
 
1513
- #: lib/tabs/indexing-tab.php:521 vendor/lib/tabs/indexing-tab.php:480
1514
  msgid ""
1515
  "How Relevanssi should handle periods between decimals? Replacing with spaces "
1516
  "is the default option, but that often leads to the numbers being removed "
1517
  "completely. If you need to search decimal numbers a lot, keep the periods."
1518
  msgstr ""
1519
 
1520
- #: lib/tabs/indexing-tab.php:539 vendor/lib/tabs/indexing-tab.php:498
1521
  msgid "Hide advanced settings"
1522
  msgstr ""
1523
 
@@ -2130,7 +2278,7 @@ msgstr ""
2130
  msgid "Content stopwords"
2131
  msgstr ""
2132
 
2133
- #: lib/tabs/stopwords-tab.php:31 vendor/lib/tabs/stopwords-tab.php:31
2134
  msgid ""
2135
  "Content stopwords are a premium feature where you can set stopwords that "
2136
  "only apply to the post content. Those stopwords will still be indexed if "
@@ -2138,18 +2286,18 @@ msgid ""
2138
  "of the post. To use content stopwords, you need Relevanssi Premium."
2139
  msgstr ""
2140
 
2141
- #: lib/tabs/stopwords-tab.php:54 vendor/lib/tabs/stopwords-tab.php:59
2142
  msgid ""
2143
  "Enter a word here to add it to the list of stopwords. The word will "
2144
  "automatically be removed from the index, so re-indexing is not necessary. "
2145
  "You can enter many words at the same time, separate words with commas."
2146
  msgstr ""
2147
 
2148
- #: lib/tabs/stopwords-tab.php:59 vendor/lib/tabs/stopwords-tab.php:64
2149
  msgid "Stopword(s) to add"
2150
  msgstr ""
2151
 
2152
- #: lib/tabs/stopwords-tab.php:67 vendor/lib/tabs/stopwords-tab.php:72
2153
  msgid ""
2154
  "Here's a list of stopwords in the database. Click a word to remove it from "
2155
  "stopwords. Removing stopwords won't automatically return them to index, so "
@@ -2157,36 +2305,36 @@ msgid ""
2157
  "back to index."
2158
  msgstr ""
2159
 
2160
- #: lib/tabs/stopwords-tab.php:72 vendor/lib/tabs/stopwords-tab.php:77
2161
  msgid "Current stopwords"
2162
  msgstr ""
2163
 
2164
- #: lib/tabs/stopwords-tab.php:110 lib/tabs/stopwords-tab.php:113
2165
  #: vendor/lib/tabs/stopwords-tab.php:98 vendor/lib/tabs/stopwords-tab.php:101
2166
  msgid "Exportable list of stopwords"
2167
  msgstr ""
2168
 
2169
- #: lib/tabs/stopwords-tab.php:115 vendor/lib/tabs/stopwords-tab.php:103
2170
  msgid ""
2171
  "You can copy the list of stopwords here if you want to back up the list, "
2172
  "copy it to a different blog or otherwise need the list."
2173
  msgstr ""
2174
 
2175
- #: lib/tabs/synonyms-tab.php:33 vendor/lib/tabs/synonyms-tab.php:33
2176
  msgid ""
2177
  "Add synonyms here to make the searches find better results. If you notice "
2178
  "your users frequently misspelling a product name, or for other reasons use "
2179
  "many names for one thing, adding synonyms will make the results better."
2180
  msgstr ""
2181
 
2182
- #: lib/tabs/synonyms-tab.php:35 vendor/lib/tabs/synonyms-tab.php:35
2183
  msgid ""
2184
  "Do not go overboard, though, as too many synonyms can make the search "
2185
  "confusing: users understand if a search query doesn't match everything, but "
2186
  "they get confused if the searches match to unexpected things."
2187
  msgstr ""
2188
 
2189
- #: lib/tabs/synonyms-tab.php:39 vendor/lib/tabs/synonyms-tab.php:39
2190
  msgid ""
2191
  "The format here is <code>key = value</code>. If you add <code>dog = hound</"
2192
  "code> to the list of synonyms, searches for <code>dog</code> automatically "
@@ -2197,29 +2345,55 @@ msgid ""
2197
  "and <code>hound</code>."
2198
  msgstr ""
2199
 
2200
- #: lib/tabs/synonyms-tab.php:41 vendor/lib/tabs/synonyms-tab.php:41
2201
  msgid ""
2202
  "The synonyms are one direction only. If you want both directions, add the "
2203
  "synonym again, reversed: <code>hound = dog</code>."
2204
  msgstr ""
2205
 
2206
- #: lib/tabs/synonyms-tab.php:43 vendor/lib/tabs/synonyms-tab.php:43
2207
  msgid ""
2208
  "It's possible to use phrases for the value, but not for the key. <code>dog = "
2209
  "\"great dane\"</code> works, but <code>\"great dane\" = dog</code> doesn't."
2210
  msgstr ""
2211
 
2212
- #: lib/tabs/synonyms-tab.php:46 vendor/lib/tabs/synonyms-tab.php:46
2213
  msgid ""
2214
  "If you want to use synonyms in AND searches, enable synonym indexing on the "
2215
  "Indexing tab."
2216
  msgstr ""
2217
 
 
 
 
 
2218
  #: vendor/lib/interface.php:637
2219
  #, php-format
2220
  msgid "To reset the logs, type \"reset\" into the box here %1$s and click %2$s"
2221
  msgstr ""
2222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2223
  #: vendor/lib/tabs/excerpts-tab.php:410
2224
  msgid "Show the breakdown of search hits in the excerpts"
2225
  msgstr ""
2
  msgstr ""
3
  "Project-Id-Version: Relevanssi\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2021-02-25 10:14+0200\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: Mikko Saari <mikko@mikkosaari.fi>\n"
8
  "Language-Team: \n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "X-Poedit-KeywordsList: _e;__;esc_html__;esc_html_e;_n\n"
14
  "X-Poedit-Basepath: .\n"
15
+ "X-Generator: Poedit 2.4.2\n"
16
  "X-Poedit-SearchPath-0: .\n"
17
  "X-Poedit-SearchPath-1: lib\n"
18
 
19
+ #: lib/admin-ajax.php:91 vendor/lib/admin-ajax.php:89
20
  #, php-format
21
  msgid "Indexed %1$d post (total %2$d), processed %3$d / %4$d."
22
  msgstr ""
23
 
24
+ #: lib/admin-ajax.php:214 lib/tabs/indexing-tab.php:130
25
  #: vendor/lib/admin-ajax.php:212 vendor/lib/tabs/indexing-tab.php:125
26
  msgid "Results"
27
  msgstr ""
28
 
29
+ #: lib/admin-ajax.php:218 vendor/lib/admin-ajax.php:216
30
  #, php-format
31
  msgid "Found a total of %1$d posts, showing posts %2$d–%3$s."
32
  msgstr ""
33
 
34
+ #: lib/admin-ajax.php:220 vendor/lib/admin-ajax.php:218
35
  msgid "Previous page"
36
  msgstr ""
37
 
38
+ #: lib/admin-ajax.php:223 vendor/lib/admin-ajax.php:221
39
  msgid "Next page"
40
  msgstr ""
41
 
42
+ #: lib/admin-ajax.php:227 vendor/lib/admin-ajax.php:225
43
  msgid "Score:"
44
  msgstr ""
45
 
46
+ #: lib/admin-ajax.php:252 vendor/lib/admin-ajax.php:250
47
  msgid "Edit"
48
  msgstr ""
49
 
50
+ #: lib/admin-ajax.php:300 vendor/lib/admin-ajax.php:296
51
  msgid "Query variables"
52
  msgstr ""
53
 
54
+ #: lib/admin-ajax.php:369 vendor/lib/admin-ajax.php:365
55
  msgid "Filters"
56
  msgstr ""
57
 
58
+ #: lib/admin-ajax.php:370 vendor/lib/admin-ajax.php:366
59
  msgid "show"
60
  msgstr ""
61
 
62
+ #: lib/admin-ajax.php:371 vendor/lib/admin-ajax.php:367
63
  msgid "hide"
64
  msgstr ""
65
 
66
+ #: lib/common.php:999 vendor/lib/common.php:1601
67
  msgid "25 most common words in the index"
68
  msgstr ""
69
 
70
+ #: lib/common.php:1000 vendor/lib/common.php:1602
71
  msgid ""
72
  "These words are excellent stopword material. A word that appears in most of "
73
  "the posts in the database is quite pointless when searching. This is also an "
77
  "necessary."
78
  msgstr ""
79
 
80
+ #: lib/common.php:1006 vendor/lib/common.php:1608
81
  msgid "Stopword Candidates"
82
  msgstr ""
83
 
84
+ #: lib/common.php:1011 vendor/lib/common.php:1613
85
  msgid "Add to stopwords"
86
  msgstr ""
87
 
88
+ #: lib/common.php:1014 vendor/lib/common.php:1616
89
  msgid "Add to content stopwords"
90
  msgstr ""
91
 
92
+ #: lib/common.php:1334
93
+ #, php-format
94
+ msgid "Nothing found for post ID %d."
95
+ msgstr ""
96
+
97
+ #: lib/common.php:1341
98
+ msgid "Possible reasons this post is not indexed"
99
+ msgstr ""
100
+
101
+ #: lib/common.php:1345
102
+ msgid "Post title"
103
+ msgstr ""
104
+
105
+ #: lib/common.php:1349
106
+ msgid "Post content"
107
+ msgstr ""
108
+
109
+ #: lib/common.php:1353 lib/tabs/indexing-tab.php:320
110
+ #: vendor/lib/tabs/indexing-tab.php:265
111
+ msgid "Comments"
112
+ msgstr ""
113
+
114
+ #: lib/common.php:1357
115
+ msgid "Tags"
116
+ msgstr ""
117
+
118
+ #: lib/common.php:1361
119
+ msgid "Categories"
120
+ msgstr ""
121
+
122
+ #: lib/common.php:1365
123
+ msgid "Other taxonomies"
124
+ msgstr ""
125
+
126
+ #: lib/common.php:1369
127
+ msgid "Links"
128
+ msgstr ""
129
+
130
+ #: lib/common.php:1373
131
+ msgid "Authors"
132
+ msgstr ""
133
+
134
+ #: lib/common.php:1377
135
+ msgid "Excerpt"
136
+ msgstr ""
137
+
138
+ #: lib/common.php:1381 lib/tabs/indexing-tab.php:334
139
+ #: vendor/lib/tabs/indexing-tab.php:279
140
+ msgid "Custom fields"
141
+ msgstr ""
142
+
143
+ #: lib/common.php:1385
144
+ msgid "MySQL content"
145
+ msgstr ""
146
+
147
+ #: lib/compatibility/aioseo.php:88
148
+ msgid "Use All-in-One SEO noindex"
149
+ msgstr ""
150
+
151
+ #: lib/compatibility/aioseo.php:93
152
+ msgid "Use All-in-One SEO noindex."
153
+ msgstr ""
154
+
155
+ #: lib/compatibility/aioseo.php:95
156
+ msgid ""
157
+ "If checked, Relevanssi will not index posts marked as \"No index\" in All-in-"
158
+ "One SEO settings."
159
+ msgstr ""
160
+
161
+ #: lib/compatibility/rankmath.php:80
162
+ msgid "Use Rank Math SEO noindex"
163
+ msgstr ""
164
+
165
+ #: lib/compatibility/rankmath.php:85
166
+ msgid "Use Rank Math SEO noindex."
167
+ msgstr ""
168
+
169
+ #: lib/compatibility/rankmath.php:87
170
+ msgid ""
171
+ "If checked, Relevanssi will not index posts marked as \"No index\" in Rank "
172
+ "Math SEO settings."
173
+ msgstr ""
174
+
175
+ #: lib/compatibility/seoframework.php:76
176
+ msgid "Use SEO Framework noindex"
177
+ msgstr ""
178
+
179
+ #: lib/compatibility/seoframework.php:81
180
+ msgid "Use SEO Framework noindex."
181
+ msgstr ""
182
+
183
+ #: lib/compatibility/seoframework.php:83
184
+ msgid ""
185
+ "If checked, Relevanssi will not index posts marked as \"No index\" in SEO "
186
+ "Framework settings."
187
+ msgstr ""
188
+
189
+ #: lib/compatibility/seopress.php:82
190
+ msgid "Use SEOPress noindex"
191
+ msgstr ""
192
+
193
+ #: lib/compatibility/seopress.php:87
194
+ msgid "Use SEOPress noindex."
195
+ msgstr ""
196
+
197
+ #: lib/compatibility/seopress.php:89
198
+ msgid ""
199
+ "If checked, Relevanssi will not index posts marked as \"No index\" in "
200
+ "SEOPress settings."
201
+ msgstr ""
202
+
203
+ #: lib/compatibility/yoast-seo.php:82
204
+ msgid "Use Yoast SEO noindex"
205
+ msgstr ""
206
+
207
+ #: lib/compatibility/yoast-seo.php:87
208
+ msgid "Use Yoast SEO noindex."
209
+ msgstr ""
210
+
211
+ #: lib/compatibility/yoast-seo.php:89
212
+ msgid ""
213
+ "If checked, Relevanssi will not index posts marked as \"No index\" in Yoast "
214
+ "SEO settings."
215
+ msgstr ""
216
+
217
  #: lib/contextual-help.php:24 vendor/lib/contextual-help.php:28
218
  #, php-format
219
  msgid ""
229
  "effect of enabling the inside-word highlights."
230
  msgstr ""
231
 
232
+ #: lib/contextual-help.php:26 vendor/lib/contextual-help.php:35
233
+ #: vendor/lib/tabs/excerpts-tab.php:378 vendor/lib/tabs/excerpts-tab.php:387
 
234
  msgid "Uncheck this if you use non-ASCII characters"
235
  msgstr ""
236
 
239
  msgid "In order to adjust the throttle limit, you can use the %s filter hook."
240
  msgstr ""
241
 
242
+ #: lib/contextual-help.php:33 lib/interface.php:446
243
  #: lib/tabs/overview-tab.php:56 vendor/lib/contextual-help.php:25
244
  #: vendor/lib/interface.php:831 vendor/lib/tabs/overview-tab.php:56
245
  msgid "Searching"
360
  "be less than perfect in quality, add a filter that returns true on hook %s."
361
  msgstr ""
362
 
363
+ #: lib/contextual-help.php:123 lib/tabs/indexing-tab.php:393
364
  #: vendor/lib/contextual-help.php:97 vendor/lib/tabs/indexing-tab.php:341
365
  msgid "Excerpts"
366
  msgstr ""
505
  msgid "WordPress.org forum"
506
  msgstr ""
507
 
508
+ #: lib/indexing.php:463
509
+ msgid "Relevanssi index exclude"
510
+ msgstr ""
511
+
512
+ #: lib/indexing.php:491
513
+ msgid "Blocked by a filter function"
514
  msgstr ""
515
 
516
+ #: lib/init.php:109 vendor/lib/init.php:88
517
  msgid ""
518
  "You do not have an index! Remember to build the index (click the \"Build the "
519
  "index\" button), otherwise searching won't work."
520
  msgstr ""
521
 
522
+ #: lib/init.php:121 vendor/lib/init.php:100
523
  msgid ""
524
  "Multibyte string functions are not available. Relevanssi may not work well "
525
  "without them. Please install (or ask your host to install) the mbstring "
526
  "extension."
527
  msgstr ""
528
 
529
+ #: lib/init.php:298 lib/init.php:299 lib/interface.php:109
530
  #: lib/tabs/logging-tab.php:48 vendor/lib/init.php:237 vendor/lib/init.php:238
531
  #: vendor/lib/interface.php:469 vendor/lib/tabs/logging-tab.php:48
532
  msgid "User searches"
533
  msgstr ""
534
 
535
+ #: lib/init.php:310 lib/init.php:311 lib/tabs/searching-tab.php:248
536
  #: vendor/lib/init.php:249 vendor/lib/init.php:250
537
  #: vendor/lib/tabs/searching-tab.php:248
538
  msgid "Admin search"
539
  msgstr ""
540
 
541
+ #: lib/init.php:523 vendor/lib/init.php:441
542
  msgid "Settings"
543
  msgstr ""
544
 
545
+ #: lib/init.php:526 vendor/lib/init.php:444
546
  msgid "Go Premium!"
547
  msgstr ""
548
 
554
  msgid "Relevanssi Premium Search Options"
555
  msgstr ""
556
 
557
+ #: lib/interface.php:111 vendor/lib/interface.php:471
558
  msgid "Relevanssi User Searches"
559
  msgstr ""
560
 
561
+ #: lib/interface.php:129 vendor/lib/interface.php:494
562
  msgid "Enable query logging to see stats here."
563
  msgstr ""
564
 
565
+ #: lib/interface.php:141 vendor/lib/interface.php:506
566
  msgid "Admin Search"
567
  msgstr ""
568
 
569
+ #: lib/interface.php:166 vendor/lib/interface.php:536
570
  msgid "Logs clear!"
571
  msgstr ""
572
 
573
+ #: lib/interface.php:168 vendor/lib/interface.php:538
574
  msgid "Clearing the logs failed."
575
  msgstr ""
576
 
577
+ #: lib/interface.php:202 vendor/lib/interface.php:572
578
  msgid "Total Searches"
579
  msgstr ""
580
 
581
+ #: lib/interface.php:204 vendor/lib/interface.php:574
582
  msgid "Totals"
583
  msgstr ""
584
 
585
+ #: lib/interface.php:208 vendor/lib/interface.php:578
586
  msgid "Common Queries"
587
  msgstr ""
588
 
589
+ #: lib/interface.php:218 vendor/lib/interface.php:588
590
  #, php-format
591
  msgid ""
592
  "Here you can see the %d most common user search queries, how many times "
593
  "those queries were made and how many results were found for those queries."
594
  msgstr ""
595
 
596
+ #: lib/interface.php:222 lib/interface.php:244 lib/interface.php:293
597
  #: vendor/lib/interface.php:592 vendor/lib/interface.php:614
598
  #: vendor/lib/interface.php:664
599
  msgid "Today and yesterday"
600
  msgstr ""
601
 
602
+ #: lib/interface.php:225 lib/interface.php:231 lib/interface.php:236
603
+ #: lib/interface.php:253 vendor/lib/interface.php:595
604
  #: vendor/lib/interface.php:601 vendor/lib/interface.php:606
605
  #: vendor/lib/interface.php:623
606
  #, php-format
607
  msgid "Last %d days"
608
  msgstr ""
609
 
610
+ #: lib/interface.php:241 vendor/lib/interface.php:611
611
  msgid "Unsuccessful Queries"
612
  msgstr ""
613
 
614
+ #: lib/interface.php:248 lib/interface.php:294 vendor/lib/interface.php:618
615
  #: vendor/lib/interface.php:665
616
  msgid "Last 7 days"
617
  msgstr ""
618
 
619
+ #: lib/interface.php:259 vendor/lib/interface.php:629
620
  msgid "Reset Logs"
621
  msgstr ""
622
 
623
+ #: lib/interface.php:268
624
  msgid ""
625
  "To reset the logs, type \"reset\" into the box here and click the Reset "
626
  "button"
627
  msgstr ""
628
 
629
+ #: lib/interface.php:271
630
  msgid "Reset"
631
  msgstr ""
632
 
633
+ #: lib/interface.php:295 vendor/lib/interface.php:666
634
  msgid "Last 30 days"
635
  msgstr ""
636
 
637
+ #: lib/interface.php:296 vendor/lib/interface.php:667
638
  msgid "Forever"
639
  msgstr ""
640
 
641
+ #: lib/interface.php:306 vendor/lib/interface.php:677
642
  msgid "When"
643
  msgstr ""
644
 
645
+ #: lib/interface.php:307 vendor/lib/interface.php:678
646
  msgid "Searches"
647
  msgstr ""
648
 
649
+ #: lib/interface.php:369 lib/log.php:195 vendor/lib/interface.php:740
650
  #: vendor/lib/log.php:178
651
  msgid "Query"
652
  msgstr ""
653
 
654
+ #: lib/interface.php:370 vendor/lib/interface.php:741
655
  msgid "Hits"
656
  msgstr ""
657
 
658
+ #: lib/interface.php:425 vendor/lib/interface.php:828
659
  msgid "Overview"
660
  msgstr ""
661
 
662
+ #: lib/interface.php:432 lib/tabs/overview-tab.php:44
663
  #: vendor/lib/interface.php:829 vendor/lib/tabs/overview-tab.php:44
664
  msgid "Indexing"
665
  msgstr ""
666
 
667
+ #: lib/interface.php:439 vendor/lib/interface.php:830
668
  msgid "Attachments"
669
  msgstr ""
670
 
671
+ #: lib/interface.php:453 vendor/lib/interface.php:832
672
  msgid "Logging"
673
  msgstr ""
674
 
675
+ #: lib/interface.php:460 lib/tabs/overview-tab.php:60
676
  #: vendor/lib/interface.php:833 vendor/lib/tabs/overview-tab.php:60
677
  msgid "Excerpts and highlights"
678
  msgstr ""
679
 
680
+ #: lib/interface.php:467 lib/tabs/synonyms-tab.php:27
681
+ #: lib/tabs/synonyms-tab.php:32 vendor/lib/interface.php:834
682
  #: vendor/lib/tabs/synonyms-tab.php:25 vendor/lib/tabs/synonyms-tab.php:30
683
  msgid "Synonyms"
684
  msgstr ""
685
 
686
+ #: lib/interface.php:474 lib/tabs/stopwords-tab.php:18
687
  #: vendor/lib/interface.php:835 vendor/lib/tabs/stopwords-tab.php:18
688
  msgid "Stopwords"
689
  msgstr ""
690
 
691
+ #: lib/interface.php:481 lib/tabs/redirects-tab.php:18
692
  #: vendor/lib/interface.php:836 vendor/lib/tabs/redirects-tab.php:18
693
  msgid "Redirects"
694
  msgstr ""
695
 
696
+ #: lib/interface.php:488 lib/tabs/debugging-tab.php:28
697
+ msgid "Debugging"
698
  msgstr ""
699
 
700
+ #: lib/interface.php:590 vendor/lib/interface.php:958
 
 
 
 
701
  msgid "Click OK to copy Relevanssi options to all subsites"
702
  msgstr ""
703
 
704
+ #: lib/interface.php:591 vendor/lib/interface.php:959
705
  msgid "Are you sure you want to remove all stopwords?"
706
  msgstr ""
707
 
708
+ #: lib/interface.php:592 vendor/lib/interface.php:960
709
  msgid "Wiping out the index..."
710
  msgstr ""
711
 
712
+ #: lib/interface.php:593 vendor/lib/interface.php:961
713
  msgid "Done."
714
  msgstr ""
715
 
716
+ #: lib/interface.php:594 vendor/lib/interface.php:962
717
  msgid "Indexing users..."
718
  msgstr ""
719
 
720
+ #: lib/interface.php:595 vendor/lib/interface.php:963
721
  msgid "Indexing the following taxonomies:"
722
  msgstr ""
723
 
724
+ #: lib/interface.php:596 vendor/lib/interface.php:964
725
  msgid "Indexing attachments..."
726
  msgstr ""
727
 
728
+ #: lib/interface.php:597 vendor/lib/interface.php:965
729
  msgid "Counting posts..."
730
  msgstr ""
731
 
732
+ #: lib/interface.php:598 vendor/lib/interface.php:966
733
  msgid "Counting taxonomy terms..."
734
  msgstr ""
735
 
736
+ #: lib/interface.php:599 vendor/lib/interface.php:967
737
  msgid "Counting users..."
738
  msgstr ""
739
 
740
+ #: lib/interface.php:600 vendor/lib/interface.php:968
741
  msgid "Counting attachments..."
742
  msgstr ""
743
 
744
+ #: lib/interface.php:601 vendor/lib/interface.php:969
745
  msgid "posts found."
746
  msgstr ""
747
 
748
+ #: lib/interface.php:602 vendor/lib/interface.php:970
749
  msgid "taxonomy terms found."
750
  msgstr ""
751
 
752
+ #: lib/interface.php:603 vendor/lib/interface.php:971
753
  msgid "users found."
754
  msgstr ""
755
 
756
+ #: lib/interface.php:604 vendor/lib/interface.php:972
757
  msgid "attachments found."
758
  msgstr ""
759
 
760
+ #: lib/interface.php:605 vendor/lib/interface.php:973
761
  msgid "Taxonomy term indexing is disabled."
762
  msgstr ""
763
 
764
+ #: lib/interface.php:606 vendor/lib/interface.php:974
765
  msgid "User indexing is disabled."
766
  msgstr ""
767
 
768
+ #: lib/interface.php:607 vendor/lib/interface.php:975
769
  msgid "Indexing complete."
770
  msgstr ""
771
 
772
+ #: lib/interface.php:608 vendor/lib/interface.php:976
773
  msgid "posts excluded."
774
  msgstr ""
775
 
776
+ #: lib/interface.php:609 vendor/lib/interface.php:977
777
  msgid "Settings have changed, please save the options before indexing."
778
  msgstr ""
779
 
780
+ #: lib/interface.php:610 vendor/lib/interface.php:978
781
  msgid "Reload the page to refresh the state of the index."
782
  msgstr ""
783
 
784
+ #: lib/interface.php:611 vendor/lib/interface.php:979
785
  msgid "Are you sure you want to delete all attachment content from the index?"
786
  msgstr ""
787
 
788
+ #: lib/interface.php:612 vendor/lib/interface.php:980
789
  msgid "Relevanssi attachment data wiped clean."
790
  msgstr ""
791
 
792
+ #: lib/interface.php:613
793
  msgid "There were problems wiping the Relevanssi attachment data clean."
794
  msgstr ""
795
 
796
+ #: lib/interface.php:614 vendor/lib/interface.php:981
797
  msgid "hour"
798
  msgstr ""
799
 
800
+ #: lib/interface.php:615 vendor/lib/interface.php:982
801
  msgid "hours"
802
  msgstr ""
803
 
804
+ #: lib/interface.php:616 vendor/lib/interface.php:983
805
  msgid "about"
806
  msgstr ""
807
 
808
+ #: lib/interface.php:617 vendor/lib/interface.php:984
809
  msgid "about an hour"
810
  msgstr ""
811
 
812
+ #: lib/interface.php:618 vendor/lib/interface.php:985
813
  msgid "about an hour and a half"
814
  msgstr ""
815
 
816
+ #: lib/interface.php:619 vendor/lib/interface.php:986
817
  msgid "minute"
818
  msgstr ""
819
 
820
+ #: lib/interface.php:620 vendor/lib/interface.php:987
821
  msgid "minutes"
822
  msgstr ""
823
 
824
+ #: lib/interface.php:621 vendor/lib/interface.php:988
825
  msgid "less than a minute"
826
  msgstr ""
827
 
828
+ #: lib/interface.php:622 vendor/lib/interface.php:989
829
  msgid "we're done!"
830
  msgstr ""
831
 
832
+ #: lib/interface.php:689 vendor/lib/interface.php:1056
833
  msgid "Tag weight"
834
  msgstr ""
835
 
836
+ #: lib/interface.php:697 vendor/lib/interface.php:1064
837
  msgid "Category weight"
838
  msgstr ""
839
 
840
+ #: lib/log.php:188
841
+ msgid "Logged searches"
842
  msgstr ""
843
 
844
+ #: lib/log.php:191 vendor/lib/log.php:174
845
  msgid "Time"
846
  msgstr ""
847
 
848
+ #: lib/log.php:199 vendor/lib/log.php:182
849
  msgid "Hits found"
850
  msgstr ""
851
 
852
+ #: lib/log.php:203 vendor/lib/log.php:186
853
  msgid "IP address"
854
  msgstr ""
855
 
856
+ #: lib/log.php:298
857
+ msgid "No search keywords logged."
858
+ msgstr ""
859
+
860
  #: lib/privacy.php:34 vendor/lib/privacy.php:34
861
  msgid "What personal data we collect and why we collect it"
862
  msgstr ""
899
  msgid "Relevanssi Search Logs"
900
  msgstr ""
901
 
902
+ #: lib/shortcodes.php:126 vendor/lib/shortcodes.php:131
903
  msgid "None"
904
  msgstr ""
905
 
920
  msgid "Added stopwords from the stopword file."
921
  msgstr ""
922
 
923
+ #: lib/stopwords.php:138 vendor/lib/stopwords.php:96
924
  #, php-format
925
  msgid "Successfully added %1$d/%2$d terms to stopwords!"
926
  msgstr ""
927
 
928
+ #: lib/stopwords.php:157 vendor/lib/stopwords.php:107
929
  #, php-format
930
  msgid "Term '%s' added to stopwords!"
931
  msgstr ""
932
 
933
+ #: lib/stopwords.php:166 vendor/lib/stopwords.php:110
934
  #, php-format
935
  msgid "Couldn't add term '%s' to stopwords!"
936
  msgstr ""
937
 
938
+ #: lib/stopwords.php:317 vendor/lib/stopwords.php:162
939
  msgid "All stopwords removed! Remember to re-index."
940
  msgstr ""
941
 
942
+ #: lib/stopwords.php:325 vendor/lib/stopwords.php:164
943
  msgid "There was a problem, and stopwords couldn't be removed."
944
  msgstr ""
945
 
946
+ #: lib/stopwords.php:362 vendor/lib/stopwords.php:187
947
  #, php-format
948
  msgid "Term '%s' removed from stopwords! Re-index to get it back to index."
949
  msgstr ""
950
 
951
+ #: lib/stopwords.php:375 vendor/lib/stopwords.php:193
952
  #, php-format
953
  msgid "Couldn't remove term '%s' from stopwords!"
954
  msgstr ""
973
  "Relevanssi Premium here%2$s."
974
  msgstr ""
975
 
976
+ #: lib/tabs/debugging-tab.php:30
977
+ msgid ""
978
+ "In order to figure out problems with indexing posts, you can test how "
979
+ "Relevanssi sees the post by entering the post ID number in the field below."
980
+ msgstr ""
981
+
982
+ #: lib/tabs/debugging-tab.php:34
983
+ #, php-format
984
+ msgid ""
985
+ "In Relevanssi Premium, you can find this feature for each post on the post "
986
+ "edit page. %1$sBuy Relevanssi Premium here%2$s."
987
+ msgstr ""
988
+
989
+ #: lib/tabs/debugging-tab.php:37
990
+ msgid "The post ID"
991
+ msgstr ""
992
+
993
  #: lib/tabs/excerpts-tab.php:84 vendor/lib/tabs/excerpts-tab.php:84
994
  msgid "Custom excerpts/snippets"
995
  msgstr ""
1037
  "have a really good reason and your posts are short."
1038
  msgstr ""
1039
 
1040
+ #: lib/tabs/excerpts-tab.php:152 vendor/lib/tabs/excerpts-tab.php:150
1041
  msgid "Allowable tags in excerpts"
1042
  msgstr ""
1043
 
1044
+ #: lib/tabs/excerpts-tab.php:162 vendor/lib/tabs/excerpts-tab.php:160
1045
  msgid ""
1046
  "List all tags you want to allow in excerpts. For example: &lt;p&gt;&lt;a&gt;"
1047
  "&lt;strong&gt;."
1048
  msgstr ""
1049
 
1050
+ #: lib/tabs/excerpts-tab.php:173 vendor/lib/tabs/excerpts-tab.php:171
1051
  msgid "Use custom fields for excerpts"
1052
  msgstr ""
1053
 
1054
+ #: lib/tabs/excerpts-tab.php:184 vendor/lib/tabs/excerpts-tab.php:175
1055
  #: vendor/lib/tabs/excerpts-tab.php:184
1056
  msgid "Use custom field content for building excerpts"
1057
  msgstr ""
1058
 
1059
+ #: lib/tabs/excerpts-tab.php:186 vendor/lib/tabs/excerpts-tab.php:187
1060
  msgid ""
1061
  "Use the custom fields setting for indexing for excerpt-making as well. "
1062
  "Enabling this option will show custom field content in Relevanssi-generated "
1063
  "excerpts."
1064
  msgstr ""
1065
 
1066
+ #: lib/tabs/excerpts-tab.php:189 vendor/lib/tabs/excerpts-tab.php:190
1067
  msgid "Enable this option to use PDF content for excerpts."
1068
  msgstr ""
1069
 
1070
+ #: lib/tabs/excerpts-tab.php:194 vendor/lib/tabs/excerpts-tab.php:195
1071
  msgid "Current custom field setting"
1072
  msgstr ""
1073
 
1074
+ #: lib/tabs/excerpts-tab.php:197 vendor/lib/tabs/excerpts-tab.php:198
1075
  msgid "all visible custom fields"
1076
  msgstr ""
1077
 
1078
+ #: lib/tabs/excerpts-tab.php:199 vendor/lib/tabs/excerpts-tab.php:200
1079
  msgid "all custom fields"
1080
  msgstr ""
1081
 
1082
+ #: lib/tabs/excerpts-tab.php:203 vendor/lib/tabs/excerpts-tab.php:204
1083
  msgid "Just PDF content"
1084
  msgstr ""
1085
 
1086
+ #: lib/tabs/excerpts-tab.php:205 vendor/lib/tabs/excerpts-tab.php:206
1087
  msgid "None selected"
1088
  msgstr ""
1089
 
1090
+ #: lib/tabs/excerpts-tab.php:213 vendor/lib/tabs/excerpts-tab.php:214
1091
  msgid "Search hit highlighting"
1092
  msgstr ""
1093
 
1094
+ #: lib/tabs/excerpts-tab.php:224 vendor/lib/tabs/excerpts-tab.php:225
1095
  msgid "Highlight type"
1096
  msgstr ""
1097
 
1098
+ #: lib/tabs/excerpts-tab.php:234 vendor/lib/tabs/excerpts-tab.php:235
1099
  msgid "No highlighting"
1100
  msgstr ""
1101
 
1102
+ #: lib/tabs/excerpts-tab.php:238 lib/tabs/excerpts-tab.php:248
1103
  #: vendor/lib/tabs/excerpts-tab.php:239 vendor/lib/tabs/excerpts-tab.php:249
1104
  msgid "Text color"
1105
  msgstr ""
1106
 
1107
+ #: lib/tabs/excerpts-tab.php:239 lib/tabs/excerpts-tab.php:262
1108
  #: vendor/lib/tabs/excerpts-tab.php:240 vendor/lib/tabs/excerpts-tab.php:263
1109
  msgid "Background color"
1110
  msgstr ""
1111
 
1112
+ #: lib/tabs/excerpts-tab.php:240 vendor/lib/tabs/excerpts-tab.php:241
1113
  msgid "CSS Style"
1114
  msgstr ""
1115
 
1116
+ #: lib/tabs/excerpts-tab.php:241 vendor/lib/tabs/excerpts-tab.php:242
1117
  msgid "CSS Class"
1118
  msgstr ""
1119
 
1120
+ #: lib/tabs/excerpts-tab.php:243 lib/tabs/excerpts-tab.php:406
1121
  #: vendor/lib/tabs/excerpts-tab.php:244 vendor/lib/tabs/excerpts-tab.php:422
1122
  msgid "Requires custom snippets to work."
1123
  msgstr ""
1124
 
1125
+ #: lib/tabs/excerpts-tab.php:276 vendor/lib/tabs/excerpts-tab.php:277
1126
  msgid "CSS style for highlights"
1127
  msgstr ""
1128
 
1129
+ #: lib/tabs/excerpts-tab.php:287 vendor/lib/tabs/excerpts-tab.php:288
1130
  #, php-format
1131
  msgid ""
1132
  "The highlights will be wrapped in a %s with this CSS in the style parameter."
1133
  msgstr ""
1134
 
1135
+ #: lib/tabs/excerpts-tab.php:292 vendor/lib/tabs/excerpts-tab.php:293
1136
  msgid "CSS class for highlights"
1137
  msgstr ""
1138
 
1139
+ #: lib/tabs/excerpts-tab.php:303 vendor/lib/tabs/excerpts-tab.php:304
1140
  #, php-format
1141
  msgid "The highlights will be wrapped in a %s with this class."
1142
  msgstr ""
1143
 
1144
+ #: lib/tabs/excerpts-tab.php:308 vendor/lib/tabs/excerpts-tab.php:309
1145
  msgid "Highlight in titles"
1146
  msgstr ""
1147
 
1148
+ #: lib/tabs/excerpts-tab.php:319 vendor/lib/tabs/excerpts-tab.php:313
1149
  #: vendor/lib/tabs/excerpts-tab.php:322
1150
  msgid "Highlight query terms in titles"
1151
  msgstr ""
1152
 
1153
+ #: lib/tabs/excerpts-tab.php:322 vendor/lib/tabs/excerpts-tab.php:326
1154
  #, php-format
1155
  msgid ""
1156
  "Highlights in titles require changes to the search results template. You "
1158
  "information, see the contextual help."
1159
  msgstr ""
1160
 
1161
+ #: lib/tabs/excerpts-tab.php:327 vendor/lib/tabs/excerpts-tab.php:331
1162
  msgid "Highlight in documents"
1163
  msgstr ""
1164
 
1165
+ #: lib/tabs/excerpts-tab.php:338 vendor/lib/tabs/excerpts-tab.php:335
1166
  #: vendor/lib/tabs/excerpts-tab.php:344
1167
  msgid "Highlight query terms in documents"
1168
  msgstr ""
1169
 
1170
+ #: lib/tabs/excerpts-tab.php:341 vendor/lib/tabs/excerpts-tab.php:348
1171
  #, php-format
1172
  msgid ""
1173
  "Highlights hits when user opens the post from search results. This requires "
1175
  "Relevanssi should add automatically."
1176
  msgstr ""
1177
 
1178
+ #: lib/tabs/excerpts-tab.php:346 vendor/lib/tabs/excerpts-tab.php:353
1179
  msgid "Highlight in comments"
1180
  msgstr ""
1181
 
1182
+ #: lib/tabs/excerpts-tab.php:357 vendor/lib/tabs/excerpts-tab.php:357
1183
  #: vendor/lib/tabs/excerpts-tab.php:366
1184
  msgid "Highlight query terms in comments"
1185
  msgstr ""
1186
 
1187
+ #: lib/tabs/excerpts-tab.php:359 vendor/lib/tabs/excerpts-tab.php:369
1188
  msgid ""
1189
  "Highlights hits in comments when user opens the post from search results."
1190
  msgstr ""
1191
 
1192
+ #: lib/tabs/excerpts-tab.php:364
1193
+ msgid "Expand highlights"
1194
+ msgstr ""
1195
+
1196
+ #: lib/tabs/excerpts-tab.php:375
1197
+ msgid "Expand highlights to cover full words"
1198
  msgstr ""
1199
 
1200
+ #: lib/tabs/excerpts-tab.php:377
1201
  msgid ""
1202
+ "When a highlight matches part of the word, if this option is enabled, the "
1203
+ "highlight will be expanded to highlight the whole word."
1204
  msgstr ""
1205
 
1206
+ #: lib/tabs/excerpts-tab.php:382 vendor/lib/tabs/excerpts-tab.php:395
1207
  msgid "Breakdown of search results"
1208
  msgstr ""
1209
 
1210
+ #: lib/tabs/excerpts-tab.php:393 vendor/lib/tabs/excerpts-tab.php:406
1211
  msgid "Breakdown of search hits in excerpts"
1212
  msgstr ""
1213
 
1214
+ #: lib/tabs/excerpts-tab.php:404 vendor/lib/tabs/excerpts-tab.php:419
1215
  msgid "Show the breakdown of search hits in the excerpts."
1216
  msgstr ""
1217
 
1218
+ #: lib/tabs/excerpts-tab.php:411 vendor/lib/tabs/excerpts-tab.php:427
1219
  msgid "The breakdown format"
1220
  msgstr ""
1221
 
1222
+ #: lib/tabs/excerpts-tab.php:421
1223
  msgid ""
1224
  "Use %body%, %title%, %categories%, %tags%, %taxonomies%, %comments%, "
1225
  "%customfields%, %author%, %excerpt% and %mysqlcolumns% to display the number "
1228
  "term got."
1229
  msgstr ""
1230
 
1231
+ #: lib/tabs/indexing-tab.php:117 vendor/lib/tabs/indexing-tab.php:112
1232
  #, php-format
1233
  msgid "%s empties the existing index and rebuilds it from scratch."
1234
  msgstr ""
1235
 
1236
+ #: lib/tabs/indexing-tab.php:117 vendor/lib/tabs/indexing-tab.php:112
1237
  msgid "Build the index"
1238
  msgstr ""
1239
 
1240
+ #: lib/tabs/indexing-tab.php:119 vendor/lib/tabs/indexing-tab.php:114
1241
  #, php-format
1242
  msgid ""
1243
  "%s doesn't empty the index and only indexes those posts that are not "
1244
  "indexed. You can use it if you have to interrupt building the index."
1245
  msgstr ""
1246
 
1247
+ #: lib/tabs/indexing-tab.php:119 vendor/lib/tabs/indexing-tab.php:114
1248
  msgid "Index unindexed posts"
1249
  msgstr ""
1250
 
1251
+ #: lib/tabs/indexing-tab.php:122 vendor/lib/tabs/indexing-tab.php:117
1252
  msgid "This doesn't index any taxonomy terms or users."
1253
  msgstr ""
1254
 
1255
+ #: lib/tabs/indexing-tab.php:129 vendor/lib/tabs/indexing-tab.php:124
1256
  msgid "Time elapsed"
1257
  msgstr ""
1258
 
1259
+ #: lib/tabs/indexing-tab.php:129 vendor/lib/tabs/indexing-tab.php:124
1260
  msgid "Time remaining"
1261
  msgstr ""
1262
 
1263
+ #: lib/tabs/indexing-tab.php:129 vendor/lib/tabs/indexing-tab.php:124
1264
  msgid "some time"
1265
  msgstr ""
1266
 
1267
+ #: lib/tabs/indexing-tab.php:131 vendor/lib/tabs/indexing-tab.php:126
1268
  msgid ""
1269
  "Indexing should respond quickly. If nothing happens in couple of minutes, "
1270
  "it's probably stuck. The most common reasons for indexing issues are "
1274
  "version of the Relevanssi scripts."
1275
  msgstr ""
1276
 
1277
+ #: lib/tabs/indexing-tab.php:135 vendor/lib/tabs/indexing-tab.php:130
1278
  msgid "State of the index"
1279
  msgstr ""
1280
 
1281
+ #: lib/tabs/indexing-tab.php:136 vendor/lib/tabs/indexing-tab.php:131
1282
  msgid "document in the index."
1283
  msgstr ""
1284
 
1285
+ #: lib/tabs/indexing-tab.php:138 vendor/lib/tabs/indexing-tab.php:133
1286
  msgid "user in the index."
1287
  msgstr ""
1288
 
1289
+ #: lib/tabs/indexing-tab.php:139 vendor/lib/tabs/indexing-tab.php:134
1290
  msgid "taxonomy term in the index."
1291
  msgstr ""
1292
 
1293
+ #: lib/tabs/indexing-tab.php:142 vendor/lib/tabs/indexing-tab.php:137
1294
  msgid "term in the index."
1295
  msgstr ""
1296
 
1297
+ #: lib/tabs/indexing-tab.php:143 vendor/lib/tabs/indexing-tab.php:138
1298
  msgid "is the lowest post ID indexed."
1299
  msgstr ""
1300
 
1301
+ #: lib/tabs/indexing-tab.php:145
1302
+ #, php-format
1303
+ msgid ""
1304
+ "These values may be inaccurate. If you need exact values, %1$supdate the "
1305
+ "counts%2$s"
1306
+ msgstr ""
1307
+
1308
+ #: lib/tabs/indexing-tab.php:155 vendor/lib/tabs/indexing-tab.php:148
1309
  msgid ""
1310
  "WARNING: You've chosen no post types to index. Nothing will be indexed. "
1311
  "Choose some post types to index."
1312
  msgstr ""
1313
 
1314
+ #: lib/tabs/indexing-tab.php:160 vendor/lib/tabs/indexing-tab.php:153
1315
  msgid "Indexing options"
1316
  msgstr ""
1317
 
1318
+ #: lib/tabs/indexing-tab.php:162 vendor/lib/tabs/indexing-tab.php:155
1319
  msgid ""
1320
  "Any changes to the settings on this page require reindexing before they take "
1321
  "effect."
1322
  msgstr ""
1323
 
1324
+ #: lib/tabs/indexing-tab.php:166 vendor/lib/tabs/indexing-tab.php:159
1325
  msgid "Post types"
1326
  msgstr ""
1327
 
1328
+ #: lib/tabs/indexing-tab.php:170
1329
  msgid "Post types to index"
1330
  msgstr ""
1331
 
1332
+ #: lib/tabs/indexing-tab.php:174 vendor/lib/tabs/indexing-tab.php:165
1333
  msgid "Type"
1334
  msgstr ""
1335
 
1336
+ #: lib/tabs/indexing-tab.php:175 lib/tabs/indexing-tab.php:267
1337
  #: vendor/lib/tabs/indexing-tab.php:166 vendor/lib/tabs/indexing-tab.php:226
1338
  msgid "Index"
1339
  msgstr ""
1340
 
1341
+ #: lib/tabs/indexing-tab.php:176 vendor/lib/tabs/indexing-tab.php:167
1342
  msgid "Excluded from search?"
1343
  msgstr ""
1344
 
1345
+ #: lib/tabs/indexing-tab.php:193
1346
  #, php-format
1347
  msgid "Index post type %s"
1348
  msgstr ""
1349
 
1350
+ #: lib/tabs/indexing-tab.php:195 lib/tabs/indexing-tab.php:289
1351
  #: vendor/lib/tabs/indexing-tab.php:184 vendor/lib/tabs/indexing-tab.php:244
1352
  msgid "yes"
1353
  msgstr ""
1354
 
1355
+ #: lib/tabs/indexing-tab.php:197
1356
  #, php-format
1357
  msgid "Post type %s is excluded from search"
1358
  msgstr ""
1359
 
1360
+ #: lib/tabs/indexing-tab.php:199 lib/tabs/indexing-tab.php:285
1361
  #: vendor/lib/tabs/indexing-tab.php:186 vendor/lib/tabs/indexing-tab.php:242
1362
  msgid "no"
1363
  msgstr ""
1364
 
1365
+ #: lib/tabs/indexing-tab.php:201
1366
  #, php-format
1367
  msgid "Post type %s can be searched"
1368
  msgstr ""
1369
 
1370
+ #: lib/tabs/indexing-tab.php:232 vendor/lib/tabs/indexing-tab.php:212
1371
  msgid ""
1372
  "If you want to index a post type that's marked 'Excluded from search', you "
1373
  "can do that without worrying about it – but you need to uncheck the 'Respect "
1374
  "exclude_from_search' setting from the Searching tab."
1375
  msgstr ""
1376
 
1377
+ #: lib/tabs/indexing-tab.php:244
1378
  msgid "Index image files"
1379
  msgstr ""
1380
 
1381
+ #: lib/tabs/indexing-tab.php:249
1382
  msgid "Index image attachments"
1383
  msgstr ""
1384
 
1385
+ #: lib/tabs/indexing-tab.php:251
1386
  msgid ""
1387
  "If this option is enabled, Relevanssi will include image attachments in the "
1388
  "index. If the option is disabled, only other attachment types are included."
1389
  msgstr ""
1390
 
1391
+ #: lib/tabs/indexing-tab.php:253
1392
  #, php-format
1393
  msgid ""
1394
  "For more detailed control over the attachment type indexing, see "
1395
  "%1$sControlling attachment types in the Knowledge base%2$s."
1396
  msgstr ""
1397
 
1398
+ #: lib/tabs/indexing-tab.php:259 vendor/lib/tabs/indexing-tab.php:218
1399
  msgid "Taxonomies"
1400
  msgstr ""
1401
 
1402
+ #: lib/tabs/indexing-tab.php:266 vendor/lib/tabs/indexing-tab.php:225
1403
  msgid "Taxonomy"
1404
  msgstr ""
1405
 
1406
+ #: lib/tabs/indexing-tab.php:268 vendor/lib/tabs/indexing-tab.php:227
1407
  msgid "Public?"
1408
  msgstr ""
1409
 
1410
+ #: lib/tabs/indexing-tab.php:284
1411
  #, php-format
1412
  msgid "Index taxonomy %s"
1413
  msgstr ""
1414
 
1415
+ #: lib/tabs/indexing-tab.php:287
1416
  #, php-format
1417
  msgid "Taxonomy %s is not public"
1418
  msgstr ""
1419
 
1420
+ #: lib/tabs/indexing-tab.php:291
1421
  #, php-format
1422
  msgid "Taxonomy %s is public"
1423
  msgstr ""
1424
 
1425
+ #: lib/tabs/indexing-tab.php:313 vendor/lib/tabs/indexing-tab.php:258
1426
  msgid ""
1427
  "If you check a taxonomy here, the terms for that taxonomy are indexed with "
1428
  "the posts. If you for example choose \"post_tag\", searching for a tag will "
1429
  "find all posts that have the tag."
1430
  msgstr ""
1431
 
1432
+ #: lib/tabs/indexing-tab.php:324 lib/tabs/indexing-tab.php:338
 
 
 
 
1433
  #: vendor/lib/tabs/indexing-tab.php:269 vendor/lib/tabs/indexing-tab.php:283
1434
  msgid "none"
1435
  msgstr ""
1436
 
1437
+ #: lib/tabs/indexing-tab.php:325 vendor/lib/tabs/indexing-tab.php:270
1438
  msgid "comments"
1439
  msgstr ""
1440
 
1441
+ #: lib/tabs/indexing-tab.php:326 vendor/lib/tabs/indexing-tab.php:271
1442
  msgid "comments and pingbacks"
1443
  msgstr ""
1444
 
1445
+ #: lib/tabs/indexing-tab.php:328 vendor/lib/tabs/indexing-tab.php:273
1446
  msgid ""
1447
  "If you choose to index comments, you can choose if you want to index just "
1448
  "comments, or everything including comments and track- and pingbacks."
1449
  msgstr ""
1450
 
1451
+ #: lib/tabs/indexing-tab.php:339 vendor/lib/tabs/indexing-tab.php:284
 
 
 
 
1452
  msgid "all"
1453
  msgstr ""
1454
 
1455
+ #: lib/tabs/indexing-tab.php:340 vendor/lib/tabs/indexing-tab.php:285
1456
  msgid "visible"
1457
  msgstr ""
1458
 
1459
+ #: lib/tabs/indexing-tab.php:341 lib/tabs/indexing-tab.php:373
1460
  #: vendor/lib/tabs/indexing-tab.php:286 vendor/lib/tabs/indexing-tab.php:318
1461
  msgid "some"
1462
  msgstr ""
1463
 
1464
+ #: lib/tabs/indexing-tab.php:345 vendor/lib/tabs/indexing-tab.php:290
1465
  msgid "'All' indexes all custom fields for posts."
1466
  msgstr ""
1467
 
1468
+ #: lib/tabs/indexing-tab.php:347 vendor/lib/tabs/indexing-tab.php:292
1469
  msgid ""
1470
  "'Visible' only includes the custom fields that are visible in the user "
1471
  "interface (with names that don't start with an underscore)."
1472
  msgstr ""
1473
 
1474
+ #: lib/tabs/indexing-tab.php:349 vendor/lib/tabs/indexing-tab.php:294
1475
  msgid "'Some' lets you choose individual custom fields to index."
1476
  msgstr ""
1477
 
1478
+ #: lib/tabs/indexing-tab.php:355 vendor/lib/tabs/indexing-tab.php:300
1479
  msgid ""
1480
  "Advanced Custom Fields has lots of invisible custom fields with meta data. "
1481
  "Selecting \"all\" will include lots of garbage in the index and excerpts. "
1482
  "\"Visible\" is usually a better option with ACF."
1483
  msgstr ""
1484
 
1485
+ #: lib/tabs/indexing-tab.php:366 vendor/lib/tabs/indexing-tab.php:311
1486
  msgid "Custom fields to index"
1487
  msgstr ""
1488
 
1489
+ #: lib/tabs/indexing-tab.php:368 vendor/lib/tabs/indexing-tab.php:313
1490
  msgid ""
1491
  "Enter a comma-separated list of custom fields to include in the index. With "
1492
  "Relevanssi Premium, you can also use 'fieldname_%_subfieldname' notation for "
1493
  "ACF repeater fields."
1494
  msgstr ""
1495
 
1496
+ #: lib/tabs/indexing-tab.php:369 vendor/lib/tabs/indexing-tab.php:314
1497
  msgid ""
1498
  "You can use 'relevanssi_index_custom_fields' filter hook to adjust which "
1499
  "custom fields are indexed."
1500
  msgstr ""
1501
 
1502
+ #: lib/tabs/indexing-tab.php:373 vendor/lib/tabs/indexing-tab.php:318
1503
  #, php-format
1504
  msgid ""
1505
  "If you want the SKU included, choose %1$s and enter %2$s. Also see the "
1506
  "contextual help for more details."
1507
  msgstr ""
1508
 
1509
+ #: lib/tabs/indexing-tab.php:380 vendor/lib/tabs/indexing-tab.php:325
1510
  msgid "Author display names"
1511
  msgstr ""
1512
 
1513
+ #: lib/tabs/indexing-tab.php:385 vendor/lib/tabs/indexing-tab.php:329
1514
  #: vendor/lib/tabs/indexing-tab.php:332
1515
  msgid "Index the post author display name"
1516
  msgstr ""
1517
 
1518
+ #: lib/tabs/indexing-tab.php:387 vendor/lib/tabs/indexing-tab.php:334
1519
  msgid ""
1520
  "Searching for the post author display name will return posts by that author."
1521
  msgstr ""
1522
 
1523
+ #: lib/tabs/indexing-tab.php:398 vendor/lib/tabs/indexing-tab.php:345
1524
  #: vendor/lib/tabs/indexing-tab.php:348 vendor/lib/tabs/indexing-tab.php:369
1525
  msgid "Index the post excerpt"
1526
  msgstr ""
1527
 
1528
+ #: lib/tabs/indexing-tab.php:400 vendor/lib/tabs/indexing-tab.php:350
1529
  msgid "Relevanssi will find posts by the content in the excerpt."
1530
  msgstr ""
1531
 
1532
+ #: lib/tabs/indexing-tab.php:402 vendor/lib/tabs/indexing-tab.php:352
1533
  msgid ""
1534
  "WooCommerce stores the product short description in the excerpt, so it's a "
1535
  "good idea to index excerpts."
1536
  msgstr ""
1537
 
1538
+ #: lib/tabs/indexing-tab.php:409 vendor/lib/tabs/indexing-tab.php:360
1539
  msgid "Shortcodes"
1540
  msgstr ""
1541
 
1542
+ #: lib/tabs/indexing-tab.php:414 vendor/lib/tabs/indexing-tab.php:365
1543
  msgid "Expand shortcodes"
1544
  msgstr ""
1545
 
1546
+ #: lib/tabs/indexing-tab.php:419 vendor/lib/tabs/indexing-tab.php:372
1547
  msgid "Expand shortcodes when indexing"
1548
  msgstr ""
1549
 
1550
+ #: lib/tabs/indexing-tab.php:422 vendor/lib/tabs/indexing-tab.php:375
1551
  msgid ""
1552
  "WooCommerce has shortcodes that don't work well with Relevanssi. With "
1553
  "WooCommerce, make sure the option is disabled."
1554
  msgstr ""
1555
 
1556
+ #: lib/tabs/indexing-tab.php:424 vendor/lib/tabs/indexing-tab.php:377
1557
  msgid ""
1558
  "If checked, Relevanssi will expand shortcodes in post content before "
1559
  "indexing. Otherwise shortcodes will be stripped."
1560
  msgstr ""
1561
 
1562
+ #: lib/tabs/indexing-tab.php:425 vendor/lib/tabs/indexing-tab.php:378
1563
  msgid ""
1564
  "If you use shortcodes to include dynamic content, Relevanssi will not keep "
1565
  "the index updated, the index will reflect the status of the shortcode "
1566
  "content at the moment of indexing."
1567
  msgstr ""
1568
 
1569
+ #: lib/tabs/indexing-tab.php:439 vendor/lib/tabs/indexing-tab.php:409
1570
  msgid "Advanced indexing settings"
1571
  msgstr ""
1572
 
1573
+ #: lib/tabs/indexing-tab.php:441 vendor/lib/tabs/indexing-tab.php:411
1574
  msgid "Show advanced settings"
1575
  msgstr ""
1576
 
1577
+ #: lib/tabs/indexing-tab.php:446 vendor/lib/tabs/indexing-tab.php:416
1578
  msgid "Minimum word length"
1579
  msgstr ""
1580
 
1581
+ #: lib/tabs/indexing-tab.php:450 vendor/lib/tabs/indexing-tab.php:420
1582
  msgid "Words shorter than this many letters will not be indexed."
1583
  msgstr ""
1584
 
1585
+ #: lib/tabs/indexing-tab.php:452 vendor/lib/tabs/indexing-tab.php:422
1586
  #, php-format
1587
  msgid ""
1588
  "To enable one-letter searches, you need to add a filter function on the "
1589
  "filter hook %1$s that returns %2$s."
1590
  msgstr ""
1591
 
1592
+ #: lib/tabs/indexing-tab.php:456 vendor/lib/tabs/indexing-tab.php:426
1593
  msgid "Punctuation control"
1594
  msgstr ""
1595
 
1596
+ #: lib/tabs/indexing-tab.php:457 vendor/lib/tabs/indexing-tab.php:427
1597
  msgid ""
1598
  "Here you can adjust how the punctuation is controlled. For more information, "
1599
  "see help. Remember that any changes here require reindexing, otherwise "
1600
  "searches will fail to find posts they should."
1601
  msgstr ""
1602
 
1603
+ #: lib/tabs/indexing-tab.php:461 vendor/lib/tabs/indexing-tab.php:431
1604
  msgid "Hyphens and dashes"
1605
  msgstr ""
1606
 
1607
+ #: lib/tabs/indexing-tab.php:465 lib/tabs/indexing-tab.php:492
1608
+ #: lib/tabs/indexing-tab.php:506 vendor/lib/tabs/indexing-tab.php:435
1609
  #: vendor/lib/tabs/indexing-tab.php:462 vendor/lib/tabs/indexing-tab.php:476
1610
  msgid "Keep"
1611
  msgstr ""
1612
 
1613
+ #: lib/tabs/indexing-tab.php:466 lib/tabs/indexing-tab.php:479
1614
+ #: lib/tabs/indexing-tab.php:493 lib/tabs/indexing-tab.php:507
1615
  #: vendor/lib/tabs/indexing-tab.php:436 vendor/lib/tabs/indexing-tab.php:449
1616
  #: vendor/lib/tabs/indexing-tab.php:463 vendor/lib/tabs/indexing-tab.php:477
1617
  msgid "Replace with spaces"
1618
  msgstr ""
1619
 
1620
+ #: lib/tabs/indexing-tab.php:467 lib/tabs/indexing-tab.php:480
1621
+ #: lib/tabs/indexing-tab.php:494 lib/tabs/indexing-tab.php:508
1622
  #: vendor/lib/tabs/indexing-tab.php:437 vendor/lib/tabs/indexing-tab.php:450
1623
  #: vendor/lib/tabs/indexing-tab.php:464 vendor/lib/tabs/indexing-tab.php:478
1624
  msgid "Remove"
1625
  msgstr ""
1626
 
1627
+ #: lib/tabs/indexing-tab.php:469 vendor/lib/tabs/indexing-tab.php:439
1628
  msgid ""
1629
  "How Relevanssi should handle hyphens and dashes (en and em dashes)? "
1630
  "Replacing with spaces is generally the best option, but in some cases "
1632
  "option."
1633
  msgstr ""
1634
 
1635
+ #: lib/tabs/indexing-tab.php:475 vendor/lib/tabs/indexing-tab.php:445
1636
  msgid "Apostrophes and quotes"
1637
  msgstr ""
1638
 
1639
+ #: lib/tabs/indexing-tab.php:482 vendor/lib/tabs/indexing-tab.php:452
1640
  msgid ""
1641
  "How Relevanssi should handle apostrophes and quotes? It's not possible to "
1642
  "keep them; that would lead to problems. Default behaviour is to replace with "
1643
  "spaces, but sometimes removing makes sense."
1644
  msgstr ""
1645
 
1646
+ #: lib/tabs/indexing-tab.php:488 vendor/lib/tabs/indexing-tab.php:458
1647
  msgid "Ampersands"
1648
  msgstr ""
1649
 
1650
+ #: lib/tabs/indexing-tab.php:496 vendor/lib/tabs/indexing-tab.php:466
1651
  msgid ""
1652
  "How Relevanssi should handle ampersands? Replacing with spaces is generally "
1653
  "the best option, but if you talk a lot about D&amp;D, for example, keeping "
1654
  "the ampersands is useful."
1655
  msgstr ""
1656
 
1657
+ #: lib/tabs/indexing-tab.php:502 vendor/lib/tabs/indexing-tab.php:472
1658
  msgid "Decimal separators"
1659
  msgstr ""
1660
 
1661
+ #: lib/tabs/indexing-tab.php:510 vendor/lib/tabs/indexing-tab.php:480
1662
  msgid ""
1663
  "How Relevanssi should handle periods between decimals? Replacing with spaces "
1664
  "is the default option, but that often leads to the numbers being removed "
1665
  "completely. If you need to search decimal numbers a lot, keep the periods."
1666
  msgstr ""
1667
 
1668
+ #: lib/tabs/indexing-tab.php:520 vendor/lib/tabs/indexing-tab.php:498
1669
  msgid "Hide advanced settings"
1670
  msgstr ""
1671
 
2278
  msgid "Content stopwords"
2279
  msgstr ""
2280
 
2281
+ #: lib/tabs/stopwords-tab.php:34 vendor/lib/tabs/stopwords-tab.php:31
2282
  msgid ""
2283
  "Content stopwords are a premium feature where you can set stopwords that "
2284
  "only apply to the post content. Those stopwords will still be indexed if "
2286
  "of the post. To use content stopwords, you need Relevanssi Premium."
2287
  msgstr ""
2288
 
2289
+ #: lib/tabs/stopwords-tab.php:64 vendor/lib/tabs/stopwords-tab.php:59
2290
  msgid ""
2291
  "Enter a word here to add it to the list of stopwords. The word will "
2292
  "automatically be removed from the index, so re-indexing is not necessary. "
2293
  "You can enter many words at the same time, separate words with commas."
2294
  msgstr ""
2295
 
2296
+ #: lib/tabs/stopwords-tab.php:72 vendor/lib/tabs/stopwords-tab.php:64
2297
  msgid "Stopword(s) to add"
2298
  msgstr ""
2299
 
2300
+ #: lib/tabs/stopwords-tab.php:80 vendor/lib/tabs/stopwords-tab.php:72
2301
  msgid ""
2302
  "Here's a list of stopwords in the database. Click a word to remove it from "
2303
  "stopwords. Removing stopwords won't automatically return them to index, so "
2305
  "back to index."
2306
  msgstr ""
2307
 
2308
+ #: lib/tabs/stopwords-tab.php:85 vendor/lib/tabs/stopwords-tab.php:77
2309
  msgid "Current stopwords"
2310
  msgstr ""
2311
 
2312
+ #: lib/tabs/stopwords-tab.php:122 lib/tabs/stopwords-tab.php:125
2313
  #: vendor/lib/tabs/stopwords-tab.php:98 vendor/lib/tabs/stopwords-tab.php:101
2314
  msgid "Exportable list of stopwords"
2315
  msgstr ""
2316
 
2317
+ #: lib/tabs/stopwords-tab.php:127 vendor/lib/tabs/stopwords-tab.php:103
2318
  msgid ""
2319
  "You can copy the list of stopwords here if you want to back up the list, "
2320
  "copy it to a different blog or otherwise need the list."
2321
  msgstr ""
2322
 
2323
+ #: lib/tabs/synonyms-tab.php:35 vendor/lib/tabs/synonyms-tab.php:33
2324
  msgid ""
2325
  "Add synonyms here to make the searches find better results. If you notice "
2326
  "your users frequently misspelling a product name, or for other reasons use "
2327
  "many names for one thing, adding synonyms will make the results better."
2328
  msgstr ""
2329
 
2330
+ #: lib/tabs/synonyms-tab.php:37 vendor/lib/tabs/synonyms-tab.php:35
2331
  msgid ""
2332
  "Do not go overboard, though, as too many synonyms can make the search "
2333
  "confusing: users understand if a search query doesn't match everything, but "
2334
  "they get confused if the searches match to unexpected things."
2335
  msgstr ""
2336
 
2337
+ #: lib/tabs/synonyms-tab.php:41 vendor/lib/tabs/synonyms-tab.php:39
2338
  msgid ""
2339
  "The format here is <code>key = value</code>. If you add <code>dog = hound</"
2340
  "code> to the list of synonyms, searches for <code>dog</code> automatically "
2345
  "and <code>hound</code>."
2346
  msgstr ""
2347
 
2348
+ #: lib/tabs/synonyms-tab.php:43 vendor/lib/tabs/synonyms-tab.php:41
2349
  msgid ""
2350
  "The synonyms are one direction only. If you want both directions, add the "
2351
  "synonym again, reversed: <code>hound = dog</code>."
2352
  msgstr ""
2353
 
2354
+ #: lib/tabs/synonyms-tab.php:45 vendor/lib/tabs/synonyms-tab.php:43
2355
  msgid ""
2356
  "It's possible to use phrases for the value, but not for the key. <code>dog = "
2357
  "\"great dane\"</code> works, but <code>\"great dane\" = dog</code> doesn't."
2358
  msgstr ""
2359
 
2360
+ #: lib/tabs/synonyms-tab.php:48 vendor/lib/tabs/synonyms-tab.php:46
2361
  msgid ""
2362
  "If you want to use synonyms in AND searches, enable synonym indexing on the "
2363
  "Indexing tab."
2364
  msgstr ""
2365
 
2366
+ #: lib/utils.php:926 vendor/lib/excerpts-highlights.php:24
2367
+ msgid "There is no excerpt because this is a protected post."
2368
+ msgstr ""
2369
+
2370
  #: vendor/lib/interface.php:637
2371
  #, php-format
2372
  msgid "To reset the logs, type \"reset\" into the box here %1$s and click %2$s"
2373
  msgstr ""
2374
 
2375
+ #: vendor/lib/interface.php:838
2376
+ msgid "Related"
2377
+ msgstr ""
2378
+
2379
+ #: vendor/lib/interface.php:839
2380
+ msgid "Import / Export options"
2381
+ msgstr ""
2382
+
2383
+ #: vendor/lib/log.php:171
2384
+ msgid "Logged seaches"
2385
+ msgstr ""
2386
+
2387
+ #: vendor/lib/tabs/excerpts-tab.php:374
2388
+ msgid "Highlighting problems with non-ASCII alphabet?"
2389
+ msgstr ""
2390
+
2391
+ #: vendor/lib/tabs/excerpts-tab.php:390
2392
+ msgid ""
2393
+ "If you use non-ASCII characters (like Cyrillic alphabet) and the highlights "
2394
+ "don't work, unchecking this option may make the highlights work."
2395
+ msgstr ""
2396
+
2397
  #: vendor/lib/tabs/excerpts-tab.php:410
2398
  msgid "Show the breakdown of search hits in the excerpts"
2399
  msgstr ""