From 2480b74887eff01f729d62a57b415d772f947c91 Mon Sep 17 00:00:00 2001 From: Jason Gerlowski Date: Mon, 1 Apr 2019 17:13:56 -0400 Subject: [PATCH] SOLR-13362: Add 'includeIndexFieldFlags' in LukeRequest --- solr/CHANGES.txt | 2 + .../client/solrj/request/LukeRequest.java | 22 ++++++++- .../client/solrj/request/TestLukeRequest.java | 46 +++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 solr/solrj/src/test/org/apache/solr/client/solrj/request/TestLukeRequest.java diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index c956c9ecc96..e6696243c28 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -150,6 +150,8 @@ Bug Fixes * SOLR-13352: Remove risk of deadlock/threadleak when shutting down an Overseer(TriggerThread). (hossman) +* SOLR-13362: Add 'includeIndexFieldFlags' support to SolrJ LukeRequest (Jason Gerlowski) + Improvements ---------------------- diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java index fe14bce5106..6e89c8470ab 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java @@ -36,6 +36,7 @@ public class LukeRequest extends SolrRequest { private List fields; private int numTerms = -1; private boolean showSchema = false; + private Boolean includeIndexFieldFlags = null; public LukeRequest() { @@ -87,7 +88,22 @@ public class LukeRequest extends SolrRequest { //--------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- - + + /** + * Choose whether /luke should return the index-flags for each field + * + * Fetching and returning the index-flags for each field in your index has non-zero cost, and can slow down requests to + * /luke. Users who do not care about these values can tell Solr to avoid generating them by setting the + * 'includeIndexFieldFlags' flag to false, saving their requests some processing. + */ + public void setIncludeIndexFieldFlags(boolean shouldInclude) { + includeIndexFieldFlags = shouldInclude; + } + + public boolean getIncludeIndexFieldFlags() { return includeIndexFieldFlags; } + + //--------------------------------------------------------------------------------- + //--------------------------------------------------------------------------------- @Override protected LukeResponse createResponse(SolrClient client) { @@ -106,6 +122,10 @@ public class LukeRequest extends SolrRequest { if (showSchema) { params.add("show", "schema"); } + if (includeIndexFieldFlags != null) { + params.add("includeIndexFieldFlags", includeIndexFieldFlags.toString()); + } + return params; } diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestLukeRequest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestLukeRequest.java new file mode 100644 index 00000000000..7e47f5dd8cf --- /dev/null +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestLukeRequest.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.solr.client.solrj.request; + +import org.apache.solr.SolrTestCaseJ4; +import org.apache.solr.common.params.SolrParams; +import org.junit.Test; + +public class TestLukeRequest extends SolrTestCaseJ4 { + @Test + public void testSkipsIncludeIndexFieldFlagsParamWhenNotSpecified() { + final LukeRequest req = new LukeRequest(); + final SolrParams params = req.getParams(); + + assertTrue("Expected the request to omit the 'includeIndexFieldFlags' param", params.get("includeIndexFieldFlags") == null); + } + + @Test + public void testContainsIncludeIndexFieldFlagsParamWhenSpecified() { + LukeRequest req = new LukeRequest(); + req.setIncludeIndexFieldFlags(true); + SolrParams params = req.getParams(); + + assertEquals("true", params.get("includeIndexFieldFlags")); + + req = new LukeRequest(); + req.setIncludeIndexFieldFlags(false); + params = req.getParams(); + assertEquals("false", params.get("includeIndexFieldFlags")); + } +}