diff --git src/wp-includes/query.php src/wp-includes/query.php
index 4b3e1e4..12debb7 100644
--- src/wp-includes/query.php
+++ src/wp-includes/query.php
@@ -2194,8 +2194,8 @@ class WP_Query {
 			else
 				$term = trim( $term, "\"' " );
 
-			// Avoid single A-Z.
-			if ( ! $term || ( 1 === strlen( $term ) && preg_match( '/^[a-z]$/i', $term ) ) )
+			// Avoid single A-Z and single dashes.
+			if ( ! $term || ( 1 === strlen( $term ) && preg_match( '/^[a-z]$/i', $term ) || '-' === $term ) )
 				continue;
 
 			if ( in_array( call_user_func( $strtolower, $term ), $stopwords, true ) )
diff --git tests/phpunit/tests/query/search.php tests/phpunit/tests/query/search.php
index 35f734b..7f7db19 100644
--- tests/phpunit/tests/query/search.php
+++ tests/phpunit/tests/query/search.php
@@ -127,6 +127,31 @@ class Tests_Query_Search extends WP_UnitTestCase {
 	}
 
 	/**
+	 * @ticket 36195
+	 */
+	public function test_s_should_not_exclude_for_dashes_between_words() {
+		$p1 = self::factory()->post->create( array(
+			'post_status' => 'publish',
+			'post_content' => 'This post has foo but also bar',
+		) );
+		$p2 = self::factory()->post->create( array(
+			'post_status' => 'publish',
+			'post_content' => 'This post has only bar',
+		) );
+		$p3 = self::factory()->post->create( array(
+			'post_status' => 'publish',
+			'post_content' => 'This post has only foo - bar',
+		) );
+
+		$q = new WP_Query( array(
+			's' => 'foo - bar',
+			'fields' => 'ids',
+		) );
+
+		$this->assertEqualSets( array( $p1, $p3 ), $q->posts );
+	}
+
+	/**
 	 * @ticket 35361
 	 */
 	public function test_search_orderby_should_be_empty_when_search_string_is_longer_than_6_words_and_exclusion_operator_is_used() {
