diff options
| author | David Bremner <david@tethera.net> | 2022-01-21 19:38:51 -0400 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2022-01-27 07:48:27 -0400 |
| commit | c62c22c9fb222d43d9b9956ce6b6e9985019ea2d (patch) | |
| tree | 5aad213350188b4e3fd765c286af7c105f976a5e /lib/regexp-fields.cc | |
| parent | c73e273aaf7410c16a9597a041bd09f49352ced3 (diff) | |
lib: drop trailing slash for path and folder searches (infix)
This resolves an old bug reported by David Edmondson in 2014. The fix
is only needed for the "boolean" case, as probabilistic / phrase
searching already ignores punctuation.
This fix is only for the infix (xapian provided) query parser.
[1]: id:cunoasuolcv.fsf@gargravarr.hh.sledj.net
Diffstat (limited to 'lib/regexp-fields.cc')
| -rw-r--r-- | lib/regexp-fields.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/regexp-fields.cc b/lib/regexp-fields.cc index c6d9d94f..7e9d959c 100644 --- a/lib/regexp-fields.cc +++ b/lib/regexp-fields.cc @@ -235,7 +235,15 @@ RegexpFieldProcessor::operator() (const std::string & str) return parser.parse_query (query_str, NOTMUCH_QUERY_PARSER_FLAGS, term_prefix); } else { /* Boolean prefix */ - std::string term = term_prefix + str; + std::string query_str; + std::string term; + + if (str.length () > 1 && str.at (str.size () - 1) == '/') + query_str = str.substr (0, str.size () - 1); + else + query_str = str; + + term = term_prefix + query_str; return Xapian::Query (term); } } |
