Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.

Commit 56e09f5

Browse files
committed
Update copyright. Also fix tests to remove tests of unsupported features
1 parent 2e4cdf0 commit 56e09f5

2 files changed

Lines changed: 121 additions & 115 deletions

File tree

google-cloud-firestore/src/main/java/com/google/cloud/firestore/pipeline/stages/Search.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2025 Google LLC
2+
* Copyright 2026 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

google-cloud-firestore/src/test/java/com/google/cloud/firestore/it/ITPipelineSearchTest.java

Lines changed: 120 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2025 Google LLC
2+
* Copyright 2026 Google LLC
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -148,8 +148,7 @@ public void setupRestaurantDocs() throws Exception {
148148
"This test suite only runs against the Enterprise edition.",
149149
!getFirestoreEdition().equals(FirestoreEdition.ENTERPRISE));
150150

151-
restaurantsCollection =
152-
firestore.collection("SearchIntegrationTests-" + LocalFirestoreHelper.autoId());
151+
restaurantsCollection = firestore.collection("SearchIntegrationTests");
153152

154153
WriteBatch batch = firestore.batch();
155154
for (Map.Entry<String, Map<String, Object>> entry : restaurantDocs.entrySet()) {
@@ -202,19 +201,19 @@ public void searchFullDocument() throws Exception {
202201
assertResultIds(snapshot, "goldenWaffle");
203202
}
204203

205-
@Test
206-
public void searchSpecificField() throws Exception {
207-
Pipeline pipeline =
208-
firestore
209-
.pipeline()
210-
.collection(restaurantsCollection.getId())
211-
.search(
212-
Search.withQuery(documentMatches("menu:waffles"))
213-
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
214-
215-
Pipeline.Snapshot snapshot = pipeline.execute().get();
216-
assertResultIds(snapshot, "goldenWaffle");
217-
}
204+
// @Test
205+
// public void searchSpecificField() throws Exception {
206+
// Pipeline pipeline =
207+
// firestore
208+
// .pipeline()
209+
// .collection(restaurantsCollection.getId())
210+
// .search(
211+
// Search.withQuery(field("menu").matches("waffles"))
212+
// .withQueryEnhancement(Search.QueryEnhancement.DISABLED));
213+
//
214+
// Pipeline.Snapshot snapshot = pipeline.execute().get();
215+
// assertResultIds(snapshot, "goldenWaffle");
216+
// }
218217

219218
@Test
220219
public void geoNearQuery() throws Exception {
@@ -233,6 +232,7 @@ public void geoNearQuery() throws Exception {
233232
assertResultIds(snapshot, "solTacos");
234233
}
235234

235+
236236
@Test
237237
public void conjunctionOfTextSearchPredicates() throws Exception {
238238
Pipeline pipeline =
@@ -241,51 +241,54 @@ public void conjunctionOfTextSearchPredicates() throws Exception {
241241
.collection(restaurantsCollection.getId())
242242
.search(
243243
Search.withQuery(
244-
and(documentMatches("menu:waffles"), documentMatches("description:diner")))
244+
and(documentMatches("waffles"), documentMatches("diner")))
245+
// TODO(search) switch back to field matches when supported by the backend
246+
// and(field("menu").matches("waffles"), field("description").matches("diner")))
245247
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
246248

247249
Pipeline.Snapshot snapshot = pipeline.execute().get();
248250
assertResultIds(snapshot, "goldenWaffle", "sunnySideUp");
249251
}
250252

251-
@Test
252-
public void conjunctionOfTextSearchAndGeoNear() throws Exception {
253-
Pipeline pipeline =
254-
firestore
255-
.pipeline()
256-
.collection(restaurantsCollection.getId())
257-
.search(
258-
Search.withQuery(
259-
and(
260-
documentMatches("menu:tacos"),
261-
field("location")
262-
.geoDistance(new GeoPoint(39.6985, -105.024))
263-
.lessThan(10000)))
264-
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
265-
266-
Pipeline.Snapshot snapshot = pipeline.execute().get();
267-
assertResultIds(snapshot, "solTacos");
268-
}
253+
// TODO(search) enable test when geo+text search indexes are supported
254+
// @Test
255+
// public void conjunctionOfTextSearchAndGeoNear() throws Exception {
256+
// Pipeline pipeline =
257+
// firestore
258+
// .pipeline()
259+
// .collection(restaurantsCollection.getId())
260+
// .search(
261+
// Search.withQuery(
262+
// and(
263+
// field("menu").matches("tacos"),
264+
// field("location")
265+
// .geoDistance(new GeoPoint(39.6985, -105.024))
266+
// .lessThan(10000)))
267+
// .withQueryEnhancement(Search.QueryEnhancement.DISABLED));
268+
//
269+
// Pipeline.Snapshot snapshot = pipeline.execute().get();
270+
// assertResultIds(snapshot, "solTacos");
271+
// }
269272

270273
@Test
271274
public void negateMatch() throws Exception {
272275
Pipeline pipeline =
273-
firestore
274-
.pipeline()
275-
.collection(restaurantsCollection.getId())
276-
.search(
277-
Search.withQuery(documentMatches("menu:-waffles"))
278-
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
276+
firestore
277+
.pipeline()
278+
.collection(restaurantsCollection.getId())
279+
.search(
280+
Search.withQuery(documentMatches("-waffles"))
281+
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
279282

280283
Pipeline.Snapshot snapshot = pipeline.execute().get();
281284
assertResultIds(
282-
snapshot,
283-
"eastsideTacos",
284-
"solTacos",
285-
"peakBurgers",
286-
"mileHighCatch",
287-
"lotusBlossomThai",
288-
"sunnySideUp");
285+
snapshot,
286+
"eastsideTacos",
287+
"solTacos",
288+
"peakBurgers",
289+
"mileHighCatch",
290+
"lotusBlossomThai",
291+
"sunnySideUp");
289292
}
290293

291294
@Test
@@ -316,19 +319,20 @@ public void rqueryAsQueryParam() throws Exception {
316319
assertResultIds(snapshot, "goldenWaffle", "sunnySideUp");
317320
}
318321

319-
@Test
320-
public void rquerySupportsFieldPaths() throws Exception {
321-
Pipeline pipeline =
322-
firestore
323-
.pipeline()
324-
.collection(restaurantsCollection.getId())
325-
.search(
326-
Search.withQuery("menu:(waffles OR pancakes) AND description:\"breakfast all day\"")
327-
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
328-
329-
Pipeline.Snapshot snapshot = pipeline.execute().get();
330-
assertResultIds(snapshot, "sunnySideUp");
331-
}
322+
// TODO(search) enable when rquery supports field paths
323+
//@Test
324+
//public void rquerySupportsFieldPaths() throws Exception {
325+
// Pipeline pipeline =
326+
// firestore
327+
// .pipeline()
328+
// .collection(restaurantsCollection.getId())
329+
// .search(
330+
// Search.withQuery("menu:(waffles OR pancakes) AND description:\"breakfast all day\"")
331+
// .withQueryEnhancement(Search.QueryEnhancement.DISABLED));
332+
//
333+
// Pipeline.Snapshot snapshot = pipeline.execute().get();
334+
// assertResultIds(snapshot, "sunnySideUp");
335+
//}
332336

333337
@Test
334338
public void conjunctionOfRqueryAndExpression() throws Exception {
@@ -364,41 +368,42 @@ public void requireQueryExpansion_searchFullDocument() throws Exception {
364368
assertResultIds(snapshot, "goldenWaffle", "sunnySideUp");
365369
}
366370

367-
@Test
368-
public void requireQueryExpansion_searchSpecificField() throws Exception {
369-
Pipeline pipeline =
370-
firestore
371-
.pipeline()
372-
.collection(restaurantsCollection.getId())
373-
.search(
374-
Search.withQuery(documentMatches("menu:waffles"))
375-
.withQueryEnhancement(Search.QueryEnhancement.REQUIRED));
376-
377-
Pipeline.Snapshot snapshot = pipeline.execute().get();
378-
assertResultIds(snapshot, "goldenWaffle", "sunnySideUp");
379-
}
371+
// TODO(search) re-enable when backend supports field matches
372+
// @Test
373+
// public void requireQueryExpansion_searchSpecificField() throws Exception {
374+
// Pipeline pipeline =
375+
// firestore
376+
// .pipeline()
377+
// .collection(restaurantsCollection.getId())
378+
// .search(
379+
// Search.withQuery(field("menu").matches("waffles"))
380+
// .withQueryEnhancement(Search.QueryEnhancement.REQUIRED));
381+
//
382+
// Pipeline.Snapshot snapshot = pipeline.execute().get();
383+
// assertResultIds(snapshot, "goldenWaffle", "sunnySideUp");
384+
// }
380385

381386
// add fields
382-
@Test
383-
public void addFields_topicalityScoreAndSnippet() throws Exception {
384-
Pipeline pipeline =
385-
firestore
386-
.pipeline()
387-
.collection(restaurantsCollection.getId())
388-
.search(
389-
Search.withQuery(documentMatches("menu:waffles"))
390-
.withAddFields(
391-
score().as("searchScore"), snippet("menu", "waffles").as("snippet"))
392-
.withQueryEnhancement(Search.QueryEnhancement.DISABLED))
393-
.select("name", "searchScore", "snippet");
394-
395-
Pipeline.Snapshot snapshot = pipeline.execute().get();
396-
assertThat(snapshot.getResults()).hasSize(1);
397-
PipelineResult result = snapshot.getResults().get(0);
398-
assertThat(result.getData().get("name")).isEqualTo("The Golden Waffle");
399-
assertThat((Double) result.getData().get("searchScore")).isGreaterThan(0.0);
400-
assertThat(((String) result.getData().get("snippet")).length()).isGreaterThan(0);
401-
}
387+
@Test
388+
public void addFields_topicalityScoreAndSnippet() throws Exception {
389+
Pipeline pipeline =
390+
firestore
391+
.pipeline()
392+
.collection(restaurantsCollection.getId())
393+
.search(
394+
Search.withQuery(documentMatches("waffles"))
395+
.withAddFields(
396+
score().as("searchScore"), snippet("menu", "waffles").as("snippet"))
397+
.withQueryEnhancement(Search.QueryEnhancement.DISABLED))
398+
.select("name", "searchScore", "snippet");
399+
400+
Pipeline.Snapshot snapshot = pipeline.execute().get();
401+
assertThat(snapshot.getResults()).hasSize(1);
402+
PipelineResult result = snapshot.getResults().get(0);
403+
assertThat(result.getData().get("name")).isEqualTo("The Golden Waffle");
404+
assertThat((Double) result.getData().get("searchScore")).isGreaterThan(0.0);
405+
assertThat(((String) result.getData().get("snippet")).length()).isGreaterThan(0);
406+
}
402407

403408
// select
404409
@Test
@@ -408,7 +413,7 @@ public void select_topicalityScoreAndSnippet() throws Exception {
408413
.pipeline()
409414
.collection(restaurantsCollection.getId())
410415
.search(
411-
Search.withQuery(documentMatches("menu:waffles"))
416+
Search.withQuery(documentMatches("waffles"))
412417
.withSelect(
413418
field("name"),
414419
field("location"),
@@ -437,7 +442,7 @@ public void sort_byTopicality() throws Exception {
437442
.pipeline()
438443
.collection(restaurantsCollection.getId())
439444
.search(
440-
Search.withQuery(documentMatches("menu:tacos"))
445+
Search.withQuery(documentMatches("tacos"))
441446
.withSort(score().descending())
442447
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
443448

@@ -452,7 +457,7 @@ public void sort_byDistance() throws Exception {
452457
.pipeline()
453458
.collection(restaurantsCollection.getId())
454459
.search(
455-
Search.withQuery(documentMatches("menu:tacos"))
460+
Search.withQuery(constant(true))
456461
.withSort(
457462
field("location").geoDistance(new GeoPoint(39.6985, -105.024)).ascending())
458463
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
@@ -461,22 +466,23 @@ public void sort_byDistance() throws Exception {
461466
assertResultIds(snapshot, "solTacos", "eastsideTacos");
462467
}
463468

464-
@Test
465-
public void sort_byMultipleOrderings() throws Exception {
466-
Pipeline pipeline =
467-
firestore
468-
.pipeline()
469-
.collection(restaurantsCollection.getId())
470-
.search(
471-
Search.withQuery(documentMatches("menu:tacos OR chicken"))
472-
.withSort(
473-
field("location").geoDistance(new GeoPoint(39.6985, -105.024)).ascending(),
474-
score().descending())
475-
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
476-
477-
Pipeline.Snapshot snapshot = pipeline.execute().get();
478-
assertResultIds(snapshot, "solTacos", "eastsideTacos", "eastsideChicken");
479-
}
469+
// TODO(search) re-enable when geo+text search indexes are supported
470+
// @Test
471+
// public void sort_byMultipleOrderings() throws Exception {
472+
// Pipeline pipeline =
473+
// firestore
474+
// .pipeline()
475+
// .collection(restaurantsCollection.getId())
476+
// .search(
477+
// Search.withQuery(field("menu").matches("tacos OR chicken"))
478+
// .withSort(
479+
// field("location").geoDistance(new GeoPoint(39.6985, -105.024)).ascending(),
480+
// score().descending())
481+
// .withQueryEnhancement(Search.QueryEnhancement.DISABLED));
482+
//
483+
// Pipeline.Snapshot snapshot = pipeline.execute().get();
484+
// assertResultIds(snapshot, "solTacos", "eastsideTacos", "eastsideChicken");
485+
// }
480486

481487
// limit
482488
@Test
@@ -503,7 +509,7 @@ public void limit_limitsTheNumberOfDocumentsScored() throws Exception {
503509
.pipeline()
504510
.collection(restaurantsCollection.getId())
505511
.search(
506-
Search.withQuery(documentMatches("menu:chicken OR tacos OR fish OR waffles"))
512+
Search.withQuery(documentMatches("chicken OR tacos OR fish OR waffles"))
507513
.withRetrievalDepth(6)
508514
.withQueryEnhancement(Search.QueryEnhancement.DISABLED));
509515

0 commit comments

Comments
 (0)