@@ -2124,13 +2124,13 @@ CREATE INDEX ON FilteredDoc (embedding) LSM_VECTOR
21242124 // Create test data with different categories
21252125 final List <com .arcadedb .database .RID > categoryARIDs = new ArrayList <>();
21262126 final List <com .arcadedb .database .RID > categoryBRIDs = new ArrayList <>();
2127-
2127+
21282128 database .transaction (() -> {
21292129 for (int i = 0 ; i < 20 ; i ++) {
21302130 final var doc = database .newDocument ("FilteredDoc" );
21312131 doc .set ("id" , "doc" + i );
21322132 doc .set ("category" , i < 10 ? "A" : "B" );
2133-
2133+
21342134 // Create vectors with some pattern based on category
21352135 final float [] vector = new float [3 ];
21362136 if (i < 10 ) {
@@ -2145,7 +2145,7 @@ CREATE INDEX ON FilteredDoc (embedding) LSM_VECTOR
21452145 vector [2 ] = 10.0f + ((i - 10 ) * 0.1f );
21462146 }
21472147 doc .set ("embedding" , vector );
2148-
2148+
21492149 final com .arcadedb .database .RID rid = doc .save ().getIdentity ();
21502150 if (i < 10 ) {
21512151 categoryARIDs .add (rid );
@@ -2165,44 +2165,44 @@ CREATE INDEX ON FilteredDoc (embedding) LSM_VECTOR
21652165 final float [] queryVector = {1.5f , 1.5f , 1.5f };
21662166
21672167 // Test 1: Search without filter - should return results from both categories
2168- final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> unfilteredResults =
2168+ final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> unfilteredResults =
21692169 index .findNeighborsFromVector (queryVector , 10 );
21702170 assertThat (unfilteredResults ).as ("Unfiltered search should return results" ).isNotEmpty ();
21712171 assertThat (unfilteredResults .size ()).as ("Should return up to 10 results" ).isLessThanOrEqualTo (10 );
21722172
21732173 // Test 2: Search with filter for category A only
21742174 final Set <com .arcadedb .database .RID > allowedRIDs = new HashSet <>(categoryARIDs );
2175- final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> filteredResults =
2175+ final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> filteredResults =
21762176 index .findNeighborsFromVector (queryVector , 10 , allowedRIDs );
2177-
2177+
21782178 assertThat (filteredResults ).as ("Filtered search should return results" ).isNotEmpty ();
21792179 assertThat (filteredResults .size ()).as ("Should return at most 10 results" ).isLessThanOrEqualTo (10 );
2180-
2180+
21812181 // Verify all results are from the allowed set
21822182 for (final var result : filteredResults ) {
21832183 assertThat (allowedRIDs ).as ("Result RID should be in allowed set" ).contains (result .getFirst ());
21842184 }
21852185
2186- // Test 3: Search with filter for category B only
2186+ // Test 3: Search with filter for category B only
21872187 final Set <com .arcadedb .database .RID > categoryBSet = new HashSet <>(categoryBRIDs );
2188- final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> categoryBResults =
2188+ final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> categoryBResults =
21892189 index .findNeighborsFromVector (queryVector , 10 , categoryBSet );
2190-
2190+
21912191 // Since query vector is close to category A, but we filter to category B,
21922192 // we should still get results (from category B), just with higher distances
21932193 assertThat (categoryBResults ).as ("Filtered search for category B should return results" ).isNotEmpty ();
2194-
2194+
21952195 for (final var result : categoryBResults ) {
21962196 assertThat (categoryBSet ).as ("Result RID should be from category B" ).contains (result .getFirst ());
21972197 }
21982198
21992199 // Test 4: Empty filter should work like unfiltered
2200- final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> emptyFilterResults =
2200+ final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> emptyFilterResults =
22012201 index .findNeighborsFromVector (queryVector , 10 , new HashSet <>());
22022202 assertThat (emptyFilterResults ).as ("Empty filter should return results like unfiltered" ).isNotEmpty ();
22032203
22042204 // Test 5: Null filter should work like unfiltered
2205- final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> nullFilterResults =
2205+ final List <com .arcadedb .utility .Pair <com .arcadedb .database .RID , Float >> nullFilterResults =
22062206 index .findNeighborsFromVector (queryVector , 10 , null );
22072207 assertThat (nullFilterResults ).as ("Null filter should return results like unfiltered" ).isNotEmpty ();
22082208 });
0 commit comments