FTS Query, Logical AND, Wildcards, and stop words causes "Malformed search string" exception

.net

#1

When I FTS search with a string like so: “anything* AND stopword*”, the query execution fails with a SQLite error saying the query was given a “malformed search string”.

Some examples:
“usfs* AND he*”
“banana* AND she*”
“orange* AND i*”

I’m guessing this is caused by stop words (common English words) being extracted from the search string before taking logical operands and wildcards into account, resulting in:
“usfs* AND *”
“banana* AND *”
“orange* AND *”

All of which are indeed “malformed search strings”. Because I don’t need any stemming or NLP features, I just set the index language to null, and the issue went away, so my problem is solved, but I figured I’d make a post as this is some very odd behavior!


#2

Setting to nil disables the language features. By default, stop words are ignored - assuming your current locale’s language was english (if you hadn’t set it explicitly).
But IIRC it will still tokenize on unicode whitespace…


#3

What’s the exact error you get? This sounds like a bug in CBL.


#4

I’ve filed this as https://github.com/couchbase/couchbase-lite-core/issues/626