@clean @exact_quotes @api
Feature: Searches that contain quotes
Scenario: Searching for a word in quotes disbles stemming (can still find plural with exact match)
When I api search for "pickles"
Then Two Words is the first api search result
Scenario: Searching for a phrase in quotes disbles stemming (can't find plural with singular)
When I api search for "catapult pickle"
Then there are no api search results
Scenario: Searching for a phrase in quotes disbles stemming (can still find plural with exact match)
When I api search for "catapult pickles"
Then Two Words is the first api search result
Scenario: Quoted phrases have a default slop of 0
When I api search for "ffnonesenseword pickles"
Then none is the first api search result
When I api search for "ffnonesenseword pickles"~1
Then Two Words is the first api search result
Scenario: Quoted phrases match stop words
When I api search for "Contains A Stop Word"
Then Contains A Stop Word is the first api search result
Scenario: Adding a ~ to a phrase keeps stemming enabled
When I api search for "catapult pickle"~
Then Two Words is the first api search result
Scenario: Adding a ~ to a phrase switches the default slop to 0
When I api search for "ffnonesenseword pickle"~
Then none is the first api search result
When I api search for "ffnonesenseword pickle"~1~
Then Two Words is the first api search result
Scenario: Adding a ~ to a phrase stops it from matching stop words so long as there is enough slop
When I api search for "doesn't actually Contain A Stop Words"~1~
Then Doesn't Actually Contain Stop Words is the first api search result
Scenario: Adding a ~~ to a phrase keeps stemming enabled
When I api search for "catapult pickle"~0~
Then Two Words is the first api search result
Scenario: Adding a ~ to a phrase turns off because it is a proximity search
When I api search for "catapult pickle"~0
Then there are no api search results
Scenario: Searching for a quoted * actually searches for a *
When I api search with query independent profile empty for "pick*"
Then Pick* is the first api search result
Scenario Outline: Searching for " "~ activates a proximity search
When I api search for "ffnonesenseword anotherword"~
Then is the first api search result
Examples:
| proximity | result |
| 0 | none |
| 1 | none |
| 2 | Two Words |
| 3 | Two Words |
| 77 | Two Words |
Scenario Outline: Prefixing a quoted phrase with - or ! or NOT negates it
When I api search for catapult "two words"
Then Catapult is in the api search results
And Two Words is not in the api search results
Examples:
| negation | suffix |
| - | |
| ! | |
| %{exact:NOT } | |
| - | ~ |
| ! | ~ |
| %{exact:NOT } | ~ |
| - | ~1 |
| ! | ~1 |
| %{exact:NOT } | ~1 |
| - | ~7~ |
| ! | ~7~ |
| %{exact:NOT } | ~7~ |
Scenario: Can combine positive and negative phrase search
When I api search for catapult "catapult" -"two words" -"some stuff"
Then Catapult is in the api search results
And Two Words is not in the api search results
Scenario: Can combine positive and negative phrase search (backwards)
When I api search for catapult -"asdf" "two words"
Then Two Words is in the api search results
And Catapult is not in the api search results
@setup_main
Scenario: Searching for a word in quotes disbles stemming (can't find plural with singular)
When I api search for "pickle"
Then there are no api search results