@@ -138,6 +138,61 @@ public void filterExpression() {
138138
139139}
140140
141+ @ Test
142+ public void filterExpressionWithDotAndBackslashIsEscaped () {
143+ var request = SearchRequest .builder ()
144+ .query ("Test" )
145+ .filterExpression ("file_name == 'clean.code.pdf' && path == 'C:\\ docs\\ files'" )
146+ .build ();
147+
148+ var expression = request .getFilterExpression ();
149+
150+ assertThat (expression .toString ()).contains ("clean\\ .code\\ .pdf" );
151+ assertThat (expression .toString ()).contains ("C:\\ \\ docs\\ \\ files" );
152+ }
153+
154+ @ Test
155+ public void filterExpressionWithMultipleLiteralsIsEscapedIndependently () {
156+ var request = SearchRequest .builder ()
157+ .query ("Test" )
158+ .filterExpression ("file_name == 'a.b.c' && author == 'me.you'" )
159+ .build ();
160+
161+ var expression = request .getFilterExpression ();
162+
163+ assertThat (expression .toString ()).contains ("a\\ .b\\ .c" );
164+ assertThat (expression .toString ()).contains ("me\\ .you" );
165+ }
166+
167+ @ Test
168+ public void filterExpressionWithVariousFileExtensionsIsEscaped () {
169+ var request = SearchRequest .builder ()
170+ .query ("Test" )
171+ .filterExpression (
172+ "file_name == 'summary.epub' || file_name == 'lecture_notes.md' || file_name == 'slides.pptx'" )
173+ .build ();
174+
175+ String expression = request .getFilterExpression ().toString ();
176+
177+ assertThat (expression ).contains ("summary\\ .epub" );
178+ assertThat (expression ).contains ("lecture_notes\\ .md" );
179+ assertThat (expression ).contains ("slides\\ .pptx" );
180+ }
181+
182+ @ Test
183+ public void filterExpressionWithInListIsEscaped () {
184+ var request = SearchRequest .builder ()
185+ .query ("Test" )
186+ .filterExpression ("file_name IN ['a.pdf', 'b.txt', 'final.report.docx']" )
187+ .build ();
188+
189+ String expression = request .getFilterExpression ().toString ();
190+
191+ assertThat (expression ).contains ("a\\ .pdf" );
192+ assertThat (expression ).contains ("b\\ .txt" );
193+ assertThat (expression ).contains ("final\\ .report\\ .docx" );
194+ }
195+
141196private void checkDefaults (SearchRequest request ) {
142197assertThat (request .getFilterExpression ()).isNull ();
143198assertThat (request .getSimilarityThreshold ()).isEqualTo (SearchRequest .SIMILARITY_THRESHOLD_ACCEPT_ALL );
0 commit comments