dsmiley commented on code in PR #1557:
URL: https://github.com/apache/solr/pull/1557#discussion_r1179707432


##########
solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java:
##########
@@ -372,7 +372,7 @@ public void doc(int docId, StoredFieldVisitor visitor) 
throws IOException {
       Document cached = doc(docId);
       visitFromCached(cached, visitor);
     } else {
-      searcher.getIndexReader().document(docId, visitor);
+      searcher.getIndexReader().storedFields().document(docId, visitor);

Review Comment:
   I think this pattern -- calling storedFields() only to use it for exactly 
one document should be banned from any hot code path.  And SolrDocumentFetcher 
is such.  I sympathize that a more elegant solution isn't obvious but we should 
do something.  
   
   Perhaps we change the contract of SolrIndexSearcher.getDocFetcher (which I 
added years ago BTW) to return a new instance (with a storedFields of course) 
that is not thread-safe.  But nonetheless has all the existing caches of any 
other instance pulled from the same searcher.  Hmmmm.
   
   Or use an existing well-managed ThreadLocal -- SolrRequestInfo, to hold the 
StoredField instance.  If it's null (unexpected / non-standard use cases) then 
the fallback is grab a storedFields() one-off use.  I think this would work 
well.
   



##########
solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java:
##########
@@ -384,16 +386,17 @@ private void estimateTermVectors(Map<String, Object> 
result) throws IOException
     for (LeafReaderContext leafReaderContext : reader.leaves()) {
       LeafReader leafReader = leafReaderContext.reader();
       Bits liveDocs = leafReader.getLiveDocs();
+      TermVectors termVectors = leafReader.termVectors();
       for (int docId = 0; docId < leafReader.maxDoc(); docId += samplingStep) {
         if (liveDocs != null && !liveDocs.get(docId)) {
           continue;
         }
-        Fields termVectors = leafReader.getTermVectors(docId);
-        if (termVectors == null) {
+        Fields vectors = termVectors.get(docId);
+        if (vectors == null) {

Review Comment:
   Why change the variable name?  "vectors" is bringing a more ambiguous word 
in recent times ("vector search")



##########
solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java:
##########
@@ -251,6 +252,7 @@ public void process(ResponseBuilder rb) throws IOException {
     SolrIndexSearcher searcher = rb.req.getSearcher();
 
     IndexReader reader = searcher.getIndexReader();
+    TermVectors tm = reader.termVectors();

Review Comment:
   Please improve this variable name, such as use `termVectors`



-- 
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