diff --git a/src/library.cpp b/src/library.cpp
index 038052a3..d3e6333e 100644
--- a/src/library.cpp
+++ b/src/library.cpp
@@ -645,8 +645,6 @@ Xapian::Query buildXapianQueryFromFilterQuery(const Filter& filter)
//queryParser.set_stemmer(Xapian::Stem(iso639_3ToXapian(???)));
//queryParser.set_stemming_strategy(Xapian::QueryParser::STEM_SOME);
const auto flags = Xapian::QueryParser::FLAG_PHRASE
- | Xapian::QueryParser::FLAG_BOOLEAN
- | Xapian::QueryParser::FLAG_BOOLEAN_ANY_CASE
| Xapian::QueryParser::FLAG_LOVEHATE
| Xapian::QueryParser::FLAG_WILDCARD
| partialQueryFlag;
diff --git a/test/library_server.cpp b/test/library_server.cpp
index e5cc2bd2..5159ffb3 100644
--- a/test/library_server.cpp
+++ b/test/library_server.cpp
@@ -781,27 +781,67 @@ TEST_F(LibraryServerTest, catalog_v2_entries_filtered_by_search_terms)
TEST_F(LibraryServerTest, catalog_v2_entries_filtering_special_queries)
{
{
- // 'or' acts as a Xapian boolean operator, resulting in malformed query
+ // 'or' doesn't act as a Xapian boolean operator
const auto r = zfs1_->GET("/ROOT%23%3F/catalog/v2/entries?q=Or");
- EXPECT_EQ(r->status, 500);
+ EXPECT_EQ(r->status, 200);
+ EXPECT_EQ(maskVariableOPDSFeedData(r->body),
+ CATALOG_V2_ENTRIES_PREAMBLE("?q=Or")
+ "
Filtered Entries (q=Or)\n"
+ " YYYY-MM-DDThh:mm:ssZ\n"
+ " 1\n"
+ " 0\n"
+ " 1\n"
+ CHARLES_RAY_CATALOG_ENTRY
+ "\n"
+ );
}
{
- // 'and' acts as a Xapian boolean operator, resulting in malformed query
+ // 'and' doesn't act as a Xapian boolean operator
const auto r = zfs1_->GET("/ROOT%23%3F/catalog/v2/entries?q=and");
- EXPECT_EQ(r->status, 500);
+ EXPECT_EQ(r->status, 200);
+ EXPECT_EQ(maskVariableOPDSFeedData(r->body),
+ CATALOG_V2_ENTRIES_PREAMBLE("?q=and")
+ " Filtered Entries (q=and)\n"
+ " YYYY-MM-DDThh:mm:ssZ\n"
+ " 1\n"
+ " 0\n"
+ " 1\n"
+ CHARLES_RAY_CATALOG_ENTRY
+ "\n"
+ );
}
{
- // 'not' acts as a Xapian boolean operator, resulting in malformed query
+ // 'not' doesn't act as a Xapian boolean operator
const auto r = zfs1_->GET("/ROOT%23%3F/catalog/v2/entries?q=not");
- EXPECT_EQ(r->status, 500);
+ EXPECT_EQ(r->status, 200);
+ EXPECT_EQ(maskVariableOPDSFeedData(r->body),
+ CATALOG_V2_ENTRIES_PREAMBLE("?q=not")
+ " Filtered Entries (q=not)\n"
+ " YYYY-MM-DDThh:mm:ssZ\n"
+ " 1\n"
+ " 0\n"
+ " 1\n"
+ RAY_CHARLES_CATALOG_ENTRY
+ "\n"
+ );
}
{
- // 'xor' acts as a Xapian boolean operator, resulting in malformed query
+ // 'xor' doesn't act as a Xapian boolean operator
const auto r = zfs1_->GET("/ROOT%23%3F/catalog/v2/entries?q=xor");
- EXPECT_EQ(r->status, 500);
+ EXPECT_EQ(r->status, 200);
+ EXPECT_EQ(maskVariableOPDSFeedData(r->body),
+ CATALOG_V2_ENTRIES_PREAMBLE("?q=xor")
+ " Filtered Entries (q=xor)\n"
+ " YYYY-MM-DDThh:mm:ssZ\n"
+ " 1\n"
+ " 0\n"
+ " 1\n"
+ UNCATEGORIZED_RAY_CHARLES_CATALOG_ENTRY
+ "\n"
+ );
}
{
@@ -812,12 +852,10 @@ TEST_F(LibraryServerTest, catalog_v2_entries_filtering_special_queries)
CATALOG_V2_ENTRIES_PREAMBLE("?q=wikipedia%20or%20library")
" Filtered Entries (q=wikipedia%20or%20library)\n"
" YYYY-MM-DDThh:mm:ssZ\n"
- " 3\n"
+ " 1\n"
" 0\n"
- " 3\n"
- UNCATEGORIZED_RAY_CHARLES_CATALOG_ENTRY
+ " 1\n"
CHARLES_RAY_CATALOG_ENTRY
- RAY_CHARLES_CATALOG_ENTRY
"\n"
);
}
@@ -830,11 +868,10 @@ TEST_F(LibraryServerTest, catalog_v2_entries_filtering_special_queries)
CATALOG_V2_ENTRIES_PREAMBLE("?q=wikipedia%20and%20articles")
" Filtered Entries (q=wikipedia%20and%20articles)\n"
" YYYY-MM-DDThh:mm:ssZ\n"
- " 2\n"
+ " 1\n"
" 0\n"
- " 2\n"
+ " 1\n"
CHARLES_RAY_CATALOG_ENTRY
- RAY_CHARLES_CATALOG_ENTRY
"\n"
);
}