epugh commented on code in PR #3151:
URL: https://github.com/apache/solr/pull/3151#discussion_r1943278670


##########
solr/test-framework/src/java/org/apache/solr/util/RestTestBase.java:
##########
@@ -88,13 +88,33 @@ private static void checkUpdateU(String message, String 
update, boolean shouldSu
         if (response != null) fail(m + "update was not successful: " + 
response);
       } else {
         String response = restTestHarness.validateErrorUpdate(update);
-        if (response != null) fail(m + "update succeeded, but should have 
failed: " + response);
+        if (response == null) fail(m + "update succeeded, but should have 
failed: " + response);
       }
     } catch (SAXException e) {
       throw new RuntimeException("Invalid XML", e);
     }
   }
 
+  public static void checkUpdateU(String update, String... tests) {

Review Comment:
   Not specific per se to this, but I wish we had a clearer plan about the 
future of RestTestBase.  ARe we embracing it?



##########
solr/modules/llm/src/java/org/apache/solr/llm/texttovector/update/processor/TextToVectorUpdateProcessor.java:
##########
@@ -0,0 +1,100 @@
+/*
+ * 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.llm.texttovector.update.processor;
+
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.SolrInputField;
+import org.apache.solr.llm.texttovector.model.SolrTextToVectorModel;
+import 
org.apache.solr.llm.texttovector.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.update.AddUpdateCommand;
+import org.apache.solr.update.processor.UpdateRequestProcessor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
+import java.util.ArrayList;
+import java.util.List;
+
+
+class TextToVectorUpdateProcessor extends UpdateRequestProcessor {
+    private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+    private final String inputField;
+    private final String outputField;
+    private final String model;
+    private SolrTextToVectorModel textToVector;
+    private ManagedTextToVectorModelStore modelStore = null;
+
+    public TextToVectorUpdateProcessor(
+            String inputField,
+            String outputField,
+            String model,
+            SolrQueryRequest req,
+            UpdateRequestProcessor next) {
+        super(next);
+        this.inputField = inputField;
+        this.outputField = outputField;
+        this.model = model;
+        this.modelStore = 
ManagedTextToVectorModelStore.getManagedModelStore(req.getCore());
+    }
+
+    /**
+     * @param cmd the update command in input containing the Document to 
process
+     * @throws IOException If there is a low-level I/O error
+     */
+    @Override
+    public void processAdd(AddUpdateCommand cmd) throws IOException {
+        this.textToVector = modelStore.getModel(model);
+        if (textToVector == null) {
+            throw new SolrException(
+                    SolrException.ErrorCode.BAD_REQUEST,
+                    "The model requested '"
+                            + model
+                            + "' can't be found in the store: "
+                            + ManagedTextToVectorModelStore.REST_END_POINT);
+        }
+
+        SolrInputDocument doc = cmd.getSolrInputDocument();
+        SolrInputField inputFieldContent = doc.get(inputField);
+        if (!isNullOrEmpty(inputFieldContent, doc, inputField)) {
+            String textToVectorise = 
inputFieldContent.getValue().toString();//add null checks and
+            float[] vector = textToVector.vectorise(textToVectorise);

Review Comment:
   I was chatting with @iamsanjay this morning, and I was expounding on the 
thought that a lot of folks might want to first index the document with just 
the core text/string/numbers, and then, since enrichment is SLOW, come back 
with a streaming expression and do things like vectorization, and an atomic 
update..  that way you pump your data in as fast as possible, and then enrich 
at your leisure...    This model constrains your indexing speed to your 
vectorization speed.  Not saying we should have the update request processor 
approach, but I also want to see a "out of band" vectorization process.



##########
solr/modules/llm/src/java/org/apache/solr/llm/texttovector/update/processor/TextToVectorUpdateProcessor.java:
##########
@@ -0,0 +1,100 @@
+/*
+ * 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.llm.texttovector.update.processor;

Review Comment:
   `texttovector` looks odd..  and I know a. package like `text.to.vector` is 
silly.   Isn't this an embedding tool?  text to vector is making an embedding 
right?  or...   `llm.vectorization.update.processor`?



##########
solr/modules/llm/src/test/org/apache/solr/llm/texttovector/update/processor/TextToVectorUpdateProcessorFactoryTest.java:
##########
@@ -0,0 +1,129 @@
+/*
+ * 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.llm.texttovector.update.processor;
+
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.MultiMapSolrParams;
+import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.llm.TestLlmBase;
+import org.apache.solr.request.SolrQueryRequestBase;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+public class TextToVectorUpdateProcessorFactoryTest extends TestLlmBase {
+  private TextToVectorUpdateProcessorFactory factoryToTest =
+      new TextToVectorUpdateProcessorFactory();
+  private NamedList<String> args = new NamedList<>();
+  
+  @BeforeClass
+  public static void initArgs() throws Exception {
+    setupTest("solrconfig-llm.xml", "schema.xml", false, false);
+  }
+
+  @AfterClass
+  public static void after() throws Exception {
+    afterTest();
+  }
+
+  @Test
+  public void init_fullArgs_shouldInitFullClassificationParams() {
+    args.add("inputField", "_text_");
+    args.add("outputField", "vector");
+    args.add("model", "model1");
+    factoryToTest.init(args);
+
+    assertEquals("_text_", factoryToTest.getInputField());
+    assertEquals("vector", factoryToTest.getOutputField());
+    assertEquals("model1", factoryToTest.getModelName());
+  }
+
+  @Test
+  public void init_nullInputField_shouldThrowExceptionWithDetailedMessage() {
+    args.add("outputField", "vector");
+    args.add("model", "model1");
+    
+    SolrException e = assertThrows(SolrException.class, () -> 
factoryToTest.init(args));
+    assertEquals("Text to Vector UpdateProcessor 'inputField' can not be 
null", e.getMessage());
+  }
+
+  @Test
+  public void 
init_notExistentInputField_shouldThrowExceptionWithDetailedMessage() throws 
Exception {
+    args.add("inputField", "notExistentInput");
+    args.add("outputField", "vector");
+    args.add("model", "model1");
+
+    Map<String, String[]> params = new HashMap<>();
+    MultiMapSolrParams mmparams = new MultiMapSolrParams(params);
+    SolrQueryRequestBase req = new 
SolrQueryRequestBase(solrClientTestRule.getCoreContainer().getCore("collection1"),
 (SolrParams) mmparams) {};

Review Comment:
   what is the trailing `{}`?  not java I am familiar with!



##########
solr/modules/llm/src/java/org/apache/solr/llm/texttovector/update/processor/TextToVectorUpdateProcessor.java:
##########
@@ -0,0 +1,100 @@
+/*
+ * 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.llm.texttovector.update.processor;
+
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.SolrInputField;
+import org.apache.solr.llm.texttovector.model.SolrTextToVectorModel;
+import 
org.apache.solr.llm.texttovector.store.rest.ManagedTextToVectorModelStore;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.update.AddUpdateCommand;
+import org.apache.solr.update.processor.UpdateRequestProcessor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
+import java.util.ArrayList;
+import java.util.List;
+
+
+class TextToVectorUpdateProcessor extends UpdateRequestProcessor {
+    private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+    private final String inputField;
+    private final String outputField;
+    private final String model;
+    private SolrTextToVectorModel textToVector;
+    private ManagedTextToVectorModelStore modelStore = null;
+
+    public TextToVectorUpdateProcessor(
+            String inputField,
+            String outputField,
+            String model,
+            SolrQueryRequest req,
+            UpdateRequestProcessor next) {
+        super(next);
+        this.inputField = inputField;
+        this.outputField = outputField;
+        this.model = model;
+        this.modelStore = 
ManagedTextToVectorModelStore.getManagedModelStore(req.getCore());
+    }
+
+    /**
+     * @param cmd the update command in input containing the Document to 
process
+     * @throws IOException If there is a low-level I/O error
+     */
+    @Override
+    public void processAdd(AddUpdateCommand cmd) throws IOException {
+        this.textToVector = modelStore.getModel(model);
+        if (textToVector == null) {
+            throw new SolrException(
+                    SolrException.ErrorCode.BAD_REQUEST,
+                    "The model requested '"
+                            + model
+                            + "' can't be found in the store: "
+                            + ManagedTextToVectorModelStore.REST_END_POINT);
+        }
+
+        SolrInputDocument doc = cmd.getSolrInputDocument();
+        SolrInputField inputFieldContent = doc.get(inputField);
+        if (!isNullOrEmpty(inputFieldContent, doc, inputField)) {
+            String textToVectorise = 
inputFieldContent.getValue().toString();//add null checks and
+            float[] vector = textToVector.vectorise(textToVectorise);
+            List<Float> vectorAsList = new ArrayList<Float>(vector.length);
+            for (float f : vector) {
+                vectorAsList.add(f);
+            }
+            doc.addField(outputField, vectorAsList);
+        }
+        super.processAdd(cmd);
+    }
+
+    protected boolean isNullOrEmpty(SolrInputField inputFieldContent, 
SolrInputDocument doc, String fieldName) {

Review Comment:
   do we warn on these types of "data model" issues in other aspects of solr?  
I mean, who would ever check solr logs to spot that these input fields are 
missing?   I see this cluttering the logs and not being very useful to have 
operationally..   I think I would just query solr "show me all docs that don't 
have the field populate" to find the issue....



##########
solr/modules/llm/src/test/org/apache/solr/llm/texttovector/update/processor/TextToVectorUpdateProcessorTest.java:
##########
@@ -0,0 +1,117 @@
+/*
+ * 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.llm.texttovector.update.processor;
+
+import org.apache.solr.client.solrj.SolrQuery;
+import org.apache.solr.llm.TestLlmBase;
+import 
org.apache.solr.llm.texttovector.store.rest.ManagedTextToVectorModelStore;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+public class TextToVectorUpdateProcessorTest extends TestLlmBase {
+
+    @BeforeClass
+    public static void init() throws Exception {
+        setupTest("solrconfig-llm-indexing.xml", "schema.xml", false, false);
+
+    }
+
+    @Test
+    public void processAdd_inputField_shouldVectoriseInputField()
+            throws Exception {
+        loadModel("dummy-model.json");
+        assertU(adoc("id", "99", "_text_", "Vegeta is the saiyan prince."));
+        assertU(adoc("id", "98", "_text_", "Vegeta is the saiyan prince."));
+        assertU(commit());
+
+        final String solrQuery = "*:*";
+        final SolrQuery query = new SolrQuery();
+        query.setQuery(solrQuery);
+        query.add("fl", "id,vector");
+
+        assertJQ(
+                "/query" + query.toQueryString(),
+                "/response/numFound==2]",
+                "/response/docs/[0]/id=='99'",
+                "/response/docs/[0]/vector==[1.0, 2.0, 3.0, 4.0]",
+                "/response/docs/[1]/id=='98'",
+                "/response/docs/[1]/vector==[1.0, 2.0, 3.0, 4.0]");
+
+        restTestHarness.delete(ManagedTextToVectorModelStore.REST_END_POINT + 
"/dummy-1");
+    }
+
+    /*
+    This test looks for the 'dummy-1' model, but such model is not loaded, the 
model store is empty, so the update fails
+     */
+    @Test
+    public void processAdd_modelNotFound_shouldRaiseException() {
+        assertFailedU("This update should fail but actually succeeded", 
adoc("id", "99", "_text_", "Vegeta is the saiyan prince."));
+
+        checkUpdateU(adoc("id", "99", "_text_", "Vegeta is the saiyan 
prince."),
+                "/response/lst[@name='error']/str[@name='msg']=\"The model 
requested 'dummy-1' can't be found in the store: 
/schema/text-to-vector-model-store\"",
+                "/response/lst[@name='error']/int[@name='code']='400'");
+    }
+
+    @Test
+    public void processAdd_emptyInputField_shouldLogAndIndexWithNoVector() 
throws Exception {
+        loadModel("dummy-model.json");
+        assertU(adoc("id", "99", "_text_", ""));
+        assertU(adoc("id", "98", "_text_", "Vegeta is the saiyan prince."));
+        assertU(commit());
+
+        final String solrQuery = "*:*";
+        final SolrQuery query = new SolrQuery();
+        query.setQuery(solrQuery);
+        query.add("fl", "id,vector");
+
+        assertJQ(
+                "/query" + query.toQueryString(),
+                "/response/numFound==2]",
+                "/response/docs/[0]/id=='99'",
+                "!/response/docs/[0]/vector==", //no vector field for the 
document 99

Review Comment:
   love the comment!



##########
solr/modules/llm/src/java/org/apache/solr/llm/texttovector/update/processor/TextToVectorUpdateProcessorFactory.java:
##########
@@ -0,0 +1,97 @@
+/*
+ * 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.llm.texttovector.update.processor;
+
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.schema.DenseVectorField;
+import org.apache.solr.schema.FieldType;
+import org.apache.solr.schema.SchemaField;
+import org.apache.solr.update.processor.UpdateRequestProcessor;
+import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
+
+/**
+ * This class implements an UpdateProcessorFactory for the Text To Vector 
Update Processor.
+ */
+public class TextToVectorUpdateProcessorFactory extends 
UpdateRequestProcessorFactory {
+    private static final String INPUT_FIELD_PARAM = "inputField";
+    private static final String OUTPUT_FIELD_PARAM = "outputField";
+    private static final String MODEL_NAME = "model";
+
+    String inputField;
+    String outputField;
+    String modelName;
+    SolrParams params;
+
+
+    @Override
+    public void init(final NamedList<?> args) {
+        if (args != null) {

Review Comment:
   Yay!  I hate the null checks we have everywhere, they make me nervous!



##########
solr/modules/llm/src/test/org/apache/solr/llm/texttovector/update/processor/TextToVectorUpdateProcessorTest.java:
##########
@@ -0,0 +1,117 @@
+/*
+ * 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.llm.texttovector.update.processor;
+
+import org.apache.solr.client.solrj.SolrQuery;
+import org.apache.solr.llm.TestLlmBase;
+import 
org.apache.solr.llm.texttovector.store.rest.ManagedTextToVectorModelStore;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+public class TextToVectorUpdateProcessorTest extends TestLlmBase {
+
+    @BeforeClass
+    public static void init() throws Exception {
+        setupTest("solrconfig-llm-indexing.xml", "schema.xml", false, false);
+
+    }
+
+    @Test
+    public void processAdd_inputField_shouldVectoriseInputField()
+            throws Exception {
+        loadModel("dummy-model.json");
+        assertU(adoc("id", "99", "_text_", "Vegeta is the saiyan prince."));
+        assertU(adoc("id", "98", "_text_", "Vegeta is the saiyan prince."));
+        assertU(commit());
+
+        final String solrQuery = "*:*";
+        final SolrQuery query = new SolrQuery();
+        query.setQuery(solrQuery);
+        query.add("fl", "id,vector");
+
+        assertJQ(
+                "/query" + query.toQueryString(),
+                "/response/numFound==2]",
+                "/response/docs/[0]/id=='99'",
+                "/response/docs/[0]/vector==[1.0, 2.0, 3.0, 4.0]",
+                "/response/docs/[1]/id=='98'",
+                "/response/docs/[1]/vector==[1.0, 2.0, 3.0, 4.0]");
+
+        restTestHarness.delete(ManagedTextToVectorModelStore.REST_END_POINT + 
"/dummy-1");

Review Comment:
   does it belong in the test below actually?



##########
solr/modules/llm/src/test/org/apache/solr/llm/texttovector/update/processor/TextToVectorUpdateProcessorTest.java:
##########
@@ -0,0 +1,117 @@
+/*
+ * 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.llm.texttovector.update.processor;
+
+import org.apache.solr.client.solrj.SolrQuery;
+import org.apache.solr.llm.TestLlmBase;
+import 
org.apache.solr.llm.texttovector.store.rest.ManagedTextToVectorModelStore;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+public class TextToVectorUpdateProcessorTest extends TestLlmBase {
+
+    @BeforeClass
+    public static void init() throws Exception {
+        setupTest("solrconfig-llm-indexing.xml", "schema.xml", false, false);
+
+    }
+
+    @Test
+    public void processAdd_inputField_shouldVectoriseInputField()
+            throws Exception {
+        loadModel("dummy-model.json");
+        assertU(adoc("id", "99", "_text_", "Vegeta is the saiyan prince."));
+        assertU(adoc("id", "98", "_text_", "Vegeta is the saiyan prince."));
+        assertU(commit());
+
+        final String solrQuery = "*:*";
+        final SolrQuery query = new SolrQuery();
+        query.setQuery(solrQuery);
+        query.add("fl", "id,vector");
+
+        assertJQ(
+                "/query" + query.toQueryString(),
+                "/response/numFound==2]",
+                "/response/docs/[0]/id=='99'",
+                "/response/docs/[0]/vector==[1.0, 2.0, 3.0, 4.0]",
+                "/response/docs/[1]/id=='98'",
+                "/response/docs/[1]/vector==[1.0, 2.0, 3.0, 4.0]");
+
+        restTestHarness.delete(ManagedTextToVectorModelStore.REST_END_POINT + 
"/dummy-1");

Review Comment:
   is this dummy-1 call needed?  if it's a test, shouldn't there be an assert?  
if it's clean up, maybe make it clear?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to