Commit Graph

12 Commits

Author SHA1 Message Date
500bf400c3 mu-query-parser: handle corner case / complexity
Some improvements:

- Fix or/xor chains (use left-associativity).
- Fix quote handling
- Make parsing O(n) rather than quadratic; limit recursion depth

And update tests.
2026-08-20 15:05:30 -07:00
86464cd083 modernization: tweaks for c++20
Update various places for what we can do with C++20:

- ends_with / starts_with
- std::to_array
- using instead of typedef
- designated initializers
- "[[maybe_unused]]" instead of G_GNUC_UNUSED

Also remove some unnecessary 'static'
2026-08-20 15:05:30 -07:00
9496d6523d lib: improve xapianizer / xapian_term 2025-05-26 09:17:37 +03:00
51ecf46d81 wip: xapianizer unit tests 2023-10-14 16:25:58 +03:00
b771fd6394 query-parser: handle naked NOT, add tests
We weren't correctly expanding "naked NOT" -> AND_NOT

Fixes #2559.
2023-09-21 19:29:59 +03:00
5bda8c321b query: move phrasification to mu-query-parser
Do the "phrasification" for matching fields later during query parsing;
this allows for handling combination fields correctly.

Also match both the normal term and the "phrase term", so we catch more
cases. Update/extend unit tests.

This fixes the "kata-container" issue also for body test.

Fixes #2167.
2023-09-17 18:11:21 +03:00
9dcbe1d96c lib: unit tests: improve / better coverage 2023-09-13 23:02:53 +03:00
2f5602b938 unit tests: improve
and add a new one for the indexer
2023-09-12 21:38:57 +03:00
e290158bcd query-xapianizer: map empty range queries to match-nothing
And only run Xapian tests if they are compatible with the version we
have.
2023-09-11 23:51:37 +03:00
8c5f92bacc query-xapianizer: improve testing coverage 2023-09-11 23:51:37 +03:00
264bb092f0 support xapian ngrams
Xapian supports an "ngrams" option to help with languages/scripts
without explicit wordbreaks, such as Chinese / Japanese / Korean.

Add some plumbing for supporting this in mu as well. Experimental for
now.
2023-09-09 17:26:20 +03:00
a9bd6e69d3 lib: implement new query parser
Implement a new query parser; the results should be very similar to the
old one, but it adds an Sexp middle-representation, so users can see how
a query is interpreted.
2023-09-09 11:59:59 +03:00