Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Term indexer improvements #303

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Term indexer improvements #303

wants to merge 10 commits into from

Conversation

MBkkt
Copy link
Contributor

@MBkkt MBkkt commented Jan 9, 2023

First is caps
Second is points
Third is points with query only points

As we see index contains a lot of smaller count of terms, which is very good
Of course this optimization possible only if you query contains only points

Tests results
➜  cmake-build-debug git:(term-indexer) ✗ ./s2region_term_indexer_test
Running main() from /build/gtest/src/googletest-release-1.12.1/googletest/src/gtest_main.cc
[==========] Running 164 tests from 2 test suites.
[----------] Global test environment set-up.
[----------] 4 tests from S2RegionTermIndexer
[ RUN      ] S2RegionTermIndexer.MarkerCharacter
[       OK ] S2RegionTermIndexer.MarkerCharacter (0 ms)
[ RUN      ] S2RegionTermIndexer.MaxLevelSetLoosely
[       OK ] S2RegionTermIndexer.MaxLevelSetLoosely (0 ms)
[ RUN      ] S2RegionTermIndexer.MoveConstructor
[       OK ] S2RegionTermIndexer.MoveConstructor (0 ms)
[ RUN      ] S2RegionTermIndexer.MoveAssignmentOperator
[       OK ] S2RegionTermIndexer.MoveAssignmentOperator (0 ms)
[----------] 4 tests from S2RegionTermIndexer (0 ms total)

[----------] 160 tests from S2RegionTermIndexerTests/S2RegionTermIndexerTest
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 13.00,  Query terms/doc: 14.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt0IndexOpt0QueryOpt0 (58 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 14.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt0IndexOpt0QueryOpt1 (47 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 13.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt0IndexOpt1QueryOpt0 (44 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt0IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt0IndexOpt1QueryOpt1 (35 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 13.00,  Query terms/doc: 14.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt1IndexOpt0QueryOpt0 (57 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 14.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt1IndexOpt0QueryOpt1 (46 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 13.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt1IndexOpt1QueryOpt0 (44 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt1IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query0SpaceOpt1IndexOpt1QueryOpt1 (35 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 13.00,  Query terms/doc: 21.20
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt0QueryOpt0 (175 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 13.00,  Query terms/doc: 7.04
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt1QueryOpt0 (163 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 13.00,  Query terms/doc: 26.83
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt0QueryOpt0 (182 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 13.00,  Query terms/doc: 7.19
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt1QueryOpt0 (164 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 27.05,  Query terms/doc: 14.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt0QueryOpt0 (186 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 7.01,  Query terms/doc: 14.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt0QueryOpt1 (163 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 21.55,  Query terms/doc: 14.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt0QueryOpt0 (177 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 7.17,  Query terms/doc: 14.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt0QueryOpt1 (166 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 27.62,  Query terms/doc: 21.25
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt0QueryOpt0 (309 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 20.86,  Query terms/doc: 27.43
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt0QueryOpt0 (301 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 17.00,  Query terms/doc: 18.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt0IndexOpt0QueryOpt0 (60 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 18.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt0IndexOpt0QueryOpt1 (49 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 17.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt0IndexOpt1QueryOpt0 (46 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt0IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt0IndexOpt1QueryOpt1 (35 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 17.00,  Query terms/doc: 18.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt1IndexOpt0QueryOpt0 (60 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 18.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt1IndexOpt0QueryOpt1 (48 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 17.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt1IndexOpt1QueryOpt0 (45 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt1IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query0SpaceOpt1IndexOpt1QueryOpt1 (34 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 17.00,  Query terms/doc: 40.46
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt0 (306 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 17.00,  Query terms/doc: 15.29
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt0 (288 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 17.00,  Query terms/doc: 53.11
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt0 (317 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 17.00,  Query terms/doc: 15.15
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt0 (283 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 53.25,  Query terms/doc: 18.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt0QueryOpt0 (310 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 15.51,  Query terms/doc: 18.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt0QueryOpt1 (307 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 40.31,  Query terms/doc: 18.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt0QueryOpt0 (307 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 15.82,  Query terms/doc: 18.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt0QueryOpt1 (300 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 54.31,  Query terms/doc: 40.53
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt0 (577 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 40.05,  Query terms/doc: 52.93
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt0 (563 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 3.00,  Query terms/doc: 4.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt0IndexOpt0QueryOpt0 (39 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 4.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt0IndexOpt0QueryOpt1 (38 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 3.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt0IndexOpt1QueryOpt0 (36 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt0IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt0IndexOpt1QueryOpt1 (35 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 3.00,  Query terms/doc: 4.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt1IndexOpt0QueryOpt0 (39 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 4.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt1IndexOpt0QueryOpt1 (38 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 3.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt1IndexOpt1QueryOpt0 (36 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt1IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query0SpaceOpt1IndexOpt1QueryOpt1 (35 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 3.00,  Query terms/doc: 6.67
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt0QueryOpt0 (215 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 3.00,  Query terms/doc: 4.96
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt1QueryOpt0 (204 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 3.00,  Query terms/doc: 9.60
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt0QueryOpt0 (212 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 3.00,  Query terms/doc: 4.92
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt1QueryOpt0 (208 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 9.55,  Query terms/doc: 4.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt0QueryOpt0 (213 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 4.89,  Query terms/doc: 4.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt0QueryOpt1 (210 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 6.62,  Query terms/doc: 4.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt0QueryOpt0 (213 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 4.94,  Query terms/doc: 4.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt0QueryOpt1 (215 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 9.72,  Query terms/doc: 6.45
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt0QueryOpt0 (377 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 6.46,  Query terms/doc: 9.37
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt0QueryOpt0 (381 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 27.00,  Query terms/doc: 28.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt0IndexOpt0QueryOpt0 (95 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 28.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt0IndexOpt0QueryOpt1 (73 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 27.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt0IndexOpt1QueryOpt0 (70 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt0IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt0IndexOpt1QueryOpt1 (48 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 27.00,  Query terms/doc: 28.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt1IndexOpt0QueryOpt0 (95 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 28.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt1IndexOpt0QueryOpt1 (73 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 27.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt1IndexOpt1QueryOpt0 (70 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt1IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query0SpaceOpt1IndexOpt1QueryOpt1 (50 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 27.00,  Query terms/doc: 29.64
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt0 (212 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 27.00,  Query terms/doc: 7.44
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt0 (191 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 27.00,  Query terms/doc: 36.44
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt0 (219 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 27.00,  Query terms/doc: 7.50
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt0 (192 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 36.05,  Query terms/doc: 28.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt0QueryOpt0 (218 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 7.32,  Query terms/doc: 28.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt0QueryOpt1 (194 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 29.37,  Query terms/doc: 28.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt0QueryOpt0 (215 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 7.38,  Query terms/doc: 28.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt0QueryOpt1 (193 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 36.75,  Query terms/doc: 29.52
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt0 (337 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 29.59,  Query terms/doc: 36.47
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt0 (335 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 16.00,  Query terms/doc: 17.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt0IndexOpt0QueryOpt0 (78 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 17.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt0IndexOpt0QueryOpt1 (65 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 16.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt0IndexOpt1QueryOpt0 (63 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt0IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt0IndexOpt1QueryOpt1 (52 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 16.00,  Query terms/doc: 17.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt1IndexOpt0QueryOpt0 (78 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 17.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt1IndexOpt0QueryOpt1 (66 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 16.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt1IndexOpt1QueryOpt0 (63 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt1IndexOpt1QueryOpt1
Index terms/doc: 1.00,  Query terms/doc: 1.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query0SpaceOpt1IndexOpt1QueryOpt1 (51 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 16.00,  Query terms/doc: 33.53
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt0QueryOpt0 (537 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt1QueryOpt0
Index terms/doc: 16.00,  Query terms/doc: 18.44
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt1QueryOpt0 (499 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 16.00,  Query terms/doc: 50.48
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt0QueryOpt0 (540 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt1QueryOpt0
Index terms/doc: 16.00,  Query terms/doc: 18.31
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt1QueryOpt0 (498 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 50.68,  Query terms/doc: 17.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt0QueryOpt0 (538 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt0QueryOpt1
Index terms/doc: 18.48,  Query terms/doc: 17.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt0QueryOpt1 (519 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 33.86,  Query terms/doc: 17.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt0QueryOpt0 (548 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt0QueryOpt1
Index terms/doc: 18.44,  Query terms/doc: 17.00
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt0QueryOpt1 (517 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt0QueryOpt0
Index terms/doc: 50.76,  Query terms/doc: 34.02
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt0QueryOpt0 (1013 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt1QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt0QueryOpt0
Index terms/doc: 33.27,  Query terms/doc: 49.97
[       OK ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt0QueryOpt0 (985 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:134: Skipped
Case query_type != DataType::POINT && options.query_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt0QueryOpt1 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt1QueryOpt0 (0 ms)
[ RUN      ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
/home/mbkkt/projects/s2geometry/src/s2/s2region_term_indexer_test.cc:130: Skipped
Case index_type != DataType::POINT && options.index_contains_points_only() is invalid.
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt1QueryOpt1 (0 ms)
[----------] 160 tests from S2RegionTermIndexerTests/S2RegionTermIndexerTest (18668 ms total)

[----------] Global test environment tear-down
[==========] 164 tests from 2 test suites ran. (18668 ms total)
[  PASSED  ] 94 tests.
[  SKIPPED ] 70 tests, listed below:
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.DefaultParametersValues/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.ConstrainMinMaxLevels/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseLeafCells/Index1Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index0Query1SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query0SpaceOpt1IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt0IndexOpt1QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt0QueryOpt1
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt1QueryOpt0
[  SKIPPED ] S2RegionTermIndexerTests/S2RegionTermIndexerTest.UseFaceCells2/Index1Query1SpaceOpt1IndexOpt1QueryOpt1

@jmr jmr mentioned this pull request Jan 9, 2023

void S2RegionTermIndexer::GetQueryTerms(const S2Point& point,
string_view prefix,
vector<string>* terms) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please split changing the type signature into a separate PR. We can discuss it there. Does this have a measurable and meaningful performance difference for you? I would have guessed that computing the covering takes way longer than reallocating vectors.

https://google.github.io/eng-practices/review/developer/small-cls.html

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't want it, it's conflicting changes. It's not convenient to make separate PRs and then resolve conflict in one to another

Copy link
Contributor Author

@MBkkt MBkkt Jan 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this have a measurable and meaningful performance difference for you?

For points it's obliviously better 0 allocations (only first time) instead of log(max-min/level) for each call

For covering it depends, so I add such overload only for function which already have covering

I would have guessed that computing the covering takes way longer than reallocating vectors.

In my overloads we don't really compute it

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, it's better, but is it 10% better or 0.001% better? We need to weigh the complexity of the change vs. the performance improvements. How much does this improve 1. time to build the whole index (or insert an object) 2. query time? (or some other user-observable action)

Copy link
Contributor Author

@MBkkt MBkkt Jan 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to weigh the complexity of the change vs. the performance improvements.

But it's not affect users who doesn't want to use it

Why is it issue?
In general same api exists for S2RegionCoverer, simple and advanced

Why don't you want same as for S2RegionCoverer?
https://github.com/google/s2geometry/blob/master/src/s2/s2region_coverer.h#L189

Could you explain please?

Why for coverer it's ok, but for indexer it's too difficult? They usage are pretty same

Sure, it's better, but is it 10% better or 0.001% better?

I don't measure this part, but it depends on what we do.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You want to make a performance change. Explain the performance impact in a time unit.

Already done

Copy link
Contributor Author

@MBkkt MBkkt Jan 11, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part of the change is good

I mean we have index with points only. Every allocation cost at least 10ns (on practice more), so if we make 1 instead of N it decrease overall time at least on (N-1)*10ns

Query with points only it's other part of PR.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How many terms do your queries have? According to your benchmarks, you save 3µs for 16 query terms.

This sounds not very significant to me, so could you explain either why this is significant, or what N you care about?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Every allocation cost at least 10ns (on practice more), so if we make 1 instead of N it decrease overall time at least on (N-1)*10ns

It's significant for me not because it's big but because it costs nothing to me, I just should use other API
Even small improvements still good, if don't make code significantly more difficult

Copy link
Contributor Author

@MBkkt MBkkt Jan 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concrete for me for query it will be same.
I can only see the difference for indexing, but I thought it's better to have a symmetrical API.

Maybe as a compromise I can keep the new indexing API but remove the new querying API (if you think that would be better)?

src/s2/s2region_term_indexer.cc Show resolved Hide resolved
src/s2/s2region_term_indexer.cc Outdated Show resolved Hide resolved

// If the index only contains points, there are no covering terms.
if (options_.index_contains_points_only()) continue;

// If we are optimizing for index space rather than query time, cells are
// also queried as covering terms (except for true_max_level() cells,
// which are indexed and queried as ancestor cells only).
if (options_.optimize_for_space() && level < true_max_level) {
terms.push_back(GetTerm(TermType::COVERING, id, prefix));
if (options_.optimize_for_space() && level != true_max_level) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only change what you need to. More changes just makes it harder to see what's really changing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just want to make it same for different function

src/s2/s2region_term_indexer_test.cc Outdated Show resolved Hide resolved
src/s2/s2region_term_indexer_test.cc Outdated Show resolved Hide resolved
@@ -131,6 +134,8 @@ TEST(S2RegionTermIndexer, IndexRegionsQueryPointsOptimizeTime) {
options.set_max_level(16);
options.set_max_cells(20);
TestRandomCaps(options, QueryType::POINT);
options.set_query_contains_points_only(true);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can remove QueryType and do it based only on query_contains_points_only. This is similar to how it works for index_contains_points_only.

@smcallis what do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can remove QueryType and do it based only on query_contains_points_only. This is similar to how it works for index_contains_points_only.

No. We want to test which query points with and without points only optimization

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? Points are also regions, and this property is already used here: https://github.com/google/s2geometry/pull/303/files/0f9ef7a0ebe8d52ebf73cfb4c441cc1e3d553a05#diff-c9f79443ff2537a812dd6c149afd00960afcc88655f0514de8a1cc4741e78e79L66

I agree it would be more test coverage, but I'm fine making this same assumption we're already making.

Copy link
Contributor Author

@MBkkt MBkkt Jan 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general exist such scenarios matrix:

index contains only points, only points with enabled optimization, anything
x
same about query
x
time/space bool option

So exists at least 3*3*2 = 18 completely different configuration

Was 3*2*2 = 12
Do you agree?

Copy link
Contributor Author

@MBkkt MBkkt Jan 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok I understood what do you mean, you are incorrect.

this same assumption we're already making.

Now in master tested such cases:

index contains points: true/false
query points/query regions

index contains points optimization affect query terms!
So it has two different query for same index (points only)

So for opposite options I need to make same query (points only) with two different index

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anyway I wrote better coverage with automatic case combinations

Copy link
Contributor Author

@MBkkt MBkkt Jan 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

16 (2 * 2 * 2 * 2) - 4 (2 * 2 * 1 * 1) = 12
all combinations - skip invalid combinations
as expected

Copy link
Contributor Author

@MBkkt MBkkt Jan 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm you right about in my code wasn't checked query points but index contains caps.

Fixed.

(2 * 2 * 2 * 2 * 2) - ((1 * 2 * 2 * 1 * 2) + (2 * 1 * 2 * 2 * 1) - 2) = 18

all combinations - (skip first if + skip second if - their intersection (it counts twice))

cases now

If you don't like skip I can use GTEST_SUCCEED()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jmr Do you ok with current tests?

@MBkkt MBkkt requested a review from jmr January 10, 2023 12:40
@MBkkt MBkkt mentioned this pull request Jan 11, 2023
: TermType::COVERING,
id, prefix));

// If query only contains points, there are no need other terms.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is obvious from the code and doesn't need a comment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as for index_only optimization

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you want I remove them both, or only my comment?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed


void S2RegionTermIndexer::GetQueryTerms(const S2Point& point,
string_view prefix,
vector<string>* terms) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How many terms do your queries have? According to your benchmarks, you save 3µs for 16 query terms.

This sounds not very significant to me, so could you explain either why this is significant, or what N you care about?

S2RegionTermIndexer::Options options;
options.set_optimize_for_space(false); // Optimize for time.
options.set_min_level(0); // Use face cells.
TEST_P(S2RegionTermIndexerTest, UseFaceCells2) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use something more descriptive than "2" to differentiate it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use something more descriptive than "2" to differentiate it.

What? No good name was in old code

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can use UseFaceCellsLevelMode2?

Copy link
Contributor Author

@MBkkt MBkkt Jan 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added some more descriptive

src/s2/s2region_term_indexer_test.cc Show resolved Hide resolved
@@ -44,10 +45,13 @@ S2_DEFINE_int32(iters, 400, "number of iterations for testing");

namespace {

enum QueryType { POINT, CAP };
enum DataType {
POINT = 0,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave it like before. Explicit = 0 not required.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@MBkkt MBkkt requested a review from jmr January 13, 2023 12:03
@MBkkt
Copy link
Contributor Author

MBkkt commented Jan 19, 2023

@jmr Any problem here?

@@ -289,6 +303,21 @@ class S2RegionTermIndexer {
std::vector<std::string> GetQueryTermsForCanonicalCovering(
const S2CellUnion& covering, absl::string_view prefix);

// Same as above but allows to reuse same buffer for different points or use
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think its fine to have these since the old ones call the new variants. Since the terms vector isn't optional let's just make it a non-const reference though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like a small inefficiency we should forget about 97% of the time. @MBkkt even said the few microseconds it saved were irrelevant to him.

Why do we want to complicate the interface with this? Now we have to document what happens with the vectors. Are they cleared? appended to?

The formatting is also inconsistent (const T& vs const T &) with a few lines below. A lot of time is spent dealing with this for epsilon difference.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes if the performance gain isn't worth it then we should probably just elide.

Copy link
Contributor Author

@MBkkt MBkkt Jan 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are they cleared? appended to?

appended to, I think function is pretty small to see it from code.

The formatting is also inconsistent (const T& vs const T &) with a few lines below. A lot of time is spent dealing with this for epsilon difference.

Sorry you don't have clang-format in repo, so my ide reformat it randomly, I tried to make it like was in other function, maybe in some places I missed it

This seems like a small inefficiency we should forget about 97% of the time. @MBkkt even said the few microseconds it saved were irrelevant to him.

#303 (comment)

I already wrote, now it's ok for me don't have such api for query, but for indexing, calling other api make my code faster (a little but measurable), so I want other api.

Offtop:

Btw today we discussed how speedup geo terms search: now we need to make disjunction of all query terms (it's from s2 documentation and it works now for us).
But it's possible to make conjuntion of disjunction which is a lot of better for inverted index (don't need to read a lot of postings lists)

Like query covering:

cellid-0: min_level 
cellid-1: min_level + 1
cellid-2: min_level + 1

Like query terms:

cellid-0-term-min-level
cellid-1-term-min-level
cellid-1-term-min-level+1
// cellid-2-term-min-level, for an example same as cellid-1-term-min-level, so deduplicated
cellid-2-term-min-level+1

So we can make query like:

(cellid-0-term-min-level || cellid-1-term-min-level) && (cellid-1-term-min-level+1 || cellid-2-term-min-level+1)

instead of

cellid-0-term-min-level || cellid-1-term-min-level || cellid-1-term-min-level+1 || cellid-2-term-min-level+1

It has few other tricks, like we should store in index for pair: term, document in posting list: is it last or not

But in general it's a lot of better.

Why do I write about this?

Because for use such api we need to know term level.
It can be computed from terms, but it's not really nice, because we already know they from covering.

So will be nice to have overload in future like:

std::vector<std::pair<int/*level*/,std::string/*term*/>>

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think its fine to have these since the old ones call the new variants. Since the terms vector isn't optional let's just make it a non-const reference though.

@smcallis

reference looks better for me, but in all other places in s2 mutable reference arguments passed like pointer

// + If the query will contain only points (rather than general regions), then
// we can skip all the ancestor terms mentioned above (except last cell see
// `GetIndexTerms(const S2Point& point...` for details) because there will
// never be any document regions larger than the index region. This can
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think saying "never be any document regions smaller than the query region" makes the comment have the same sense as 1. above.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you're right

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I already wrote, now it's ok for me don't have such api for query, but for indexing, calling other api make my code faster (a little but measurable), so I want other api.

Do you have an indexing benchmark, or are you referring to the microbenchmarks you wrote in #304? What are the results?

Offtop:
Btw today we discussed how speedup geo terms search: now we need to make disjunction of all query terms (it's from s2 documentation and it works now for us).

As you say, off-topic for this PR. Please open a discussion or an issue.

Copy link
Contributor Author

@MBkkt MBkkt Jan 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jmr Today another day when I thought that will be good to have such API

But because now s2 don't have it I need to write code like this:

    geoTerms = _indexer.GetIndexTerms(*_shape.region(), {});
    if (!_shape.contains(centroid)) {
      auto terms = _indexer.GetIndexTerms(centroid, {});
      geoTerms.insert(geoTerms.end(), std::make_move_iterator(terms.begin()),
                      std::make_move_iterator(terms.end()));

Copy link
Contributor Author

@MBkkt MBkkt Jan 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have an indexing benchmark, or are you referring to the microbenchmarks you wrote in #304? What are the results?

We already computed, it saves at least N*10 ns, where N number of inserts.
Why do you against this API so much?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants