What kinds of searches do you want to run?  Are you trying to extract class 
names, method names, and such and make those searchable?   If that’s the case, 
you need some kind of “parser” to reverse engineer that information from .class 
and .jar files before feeding it to Solr, which would happen before analysis.   
Java itself comes with a javap command that can do this; whether this is the 
“best” way to go for your scenario I don’t know, but here’s an interesting 
example pasted below (using Solr 5.x).

—
Erik Hatcher, Senior Solutions Architect
http://www.lucidworks.com


javap build/solr-core/classes/java/org/apache/solr/SolrLogFormatter.class > 
test.txt
bin/post -c java test.txt

now search for "coreInfoMap" 
http://localhost:8983/solr/java/browse?q=coreInfoMap

I tried to be cleverer and use the stdin option of bin/post, like this: 
javap build/solr-core/classes/java/org/apache/solr/SolrLogFormatter.class | 
bin/post -c java -url http://localhost:8983/solr/java/update/extract -type 
text/plain -params "literal.id=SolrLogFormatter" -out yes -d
but something isn’t working right with the stdin detection like that (it does 
work to `cat test.txt | bin/post…` though, hmmm)

test.txt looks like this, `cat test.txt`:
Compiled from "SolrLogFormatter.java"
public class org.apache.solr.SolrLogFormatter extends 
java.util.logging.Formatter {
  long startTime;
  long lastTime;
  java.util.Map<org.apache.solr.SolrLogFormatter$Method, java.lang.String> 
methodAlias;
  public boolean shorterFormat;
  java.util.Map<org.apache.solr.core.SolrCore, 
org.apache.solr.SolrLogFormatter$CoreInfo> coreInfoMap;
  public java.util.Map<java.lang.String, java.lang.String> classAliases;
  static java.lang.ThreadLocal<java.lang.String> threadLocal;
  public org.apache.solr.SolrLogFormatter();
  public void setShorterFormat();
  public java.lang.String format(java.util.logging.LogRecord);
  public void appendThread(java.lang.StringBuilder, 
java.util.logging.LogRecord);
  public java.lang.String _format(java.util.logging.LogRecord);
  public java.lang.String getHead(java.util.logging.Handler);
  public java.lang.String getTail(java.util.logging.Handler);
  public java.lang.String formatMessage(java.util.logging.LogRecord);
  public static void main(java.lang.String[]) throws java.lang.Exception;
  public static void go() throws java.lang.Exception;
  static {};
}

> On May 8, 2015, at 3:31 PM, Mark <javam...@gmail.com> wrote:
> 
> I looking to use Solr search over the byte code in Classes and Jars.
> 
> Does anyone know or have experience of Analyzers, Tokenizers, and Token
> Filters for such a task?
> 
> Regards
> 
> Mark

Reply via email to