You’re going to need to tokenize to look up words, so a TokenFilter is a better place to put this sort of thing, I think.
Build off of Lucene’s SynonymFilter (and corresponding SynonymFilterFactory) https://github.com/apache/lucene-solr/blob/5e5fd662575105de88d8514b426bccdcb4c76948/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilter.java <https://github.com/apache/lucene-solr/blob/5e5fd662575105de88d8514b426bccdcb4c76948/lucene/analysis/common/src/java/org/apache/lucene/analysis/synonym/SynonymFilter.java> I’m not sure exactly what your code is trying to do (please share that as well, for best assistance), but I do not recommend putting custom code into Solr’s package namespaces (and obviously that has issues here, because of the separate JAR and visibility/access). Erik > On Jul 25, 2016, at 2:25 AM, sara hajili <hajili.s...@gmail.com> wrote: > > i use solr 6-1-0. > and i write my own search Handler .i got this error: > > java.lang.IllegalAccessError: tried to access field > org.apache.solr.handler.component.ResponseBuilder.requestInfo from > class org.apache.solr.handler.component.MyResponseBuilder > at > org.apache.solr.handler.component.MyResponseBuilder.getRequestInfo(MyResponseBuilder.java:19) > at > org.apache.solr.handler.component.MySearchHandler.handleRequestBody(MySearchHandler.java:94) > at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:156) > at org.apache.solr.core.SolrCore.execute(SolrCore.java:2036) > at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:657) > at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:464) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:257) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:208) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1160) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1092) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) > at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) > at org.eclipse.jetty.server.Server.handle(Server.java:518) > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244) > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) > at > org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) > at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:246) > at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:156) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) > at java.lang.Thread.run(Thread.java:745) > > > because of in solr6-1-0 searchHandler 2 fields in responseBuilder > declare as a package access type(isDistrib and requestInfo).and in > this class does not exist any getter to this fields. > > so when i implement MySearchHandler and create new class > "MySearchHandler" in new java project and put in package > "org.apache.solr.handler" > > and extends mySearchHandler form searchHandler. > > so in compile time it is not issue that we use field with package > access("idea in compile time assume that they are in same package") > > but when i create a jar file and put in solr .and in solr-config file > i put my handler "MySearchHandler" as /mySearchhandler i got above > error. > > so it shows that in runtime solr find 2 jar file with same package > name.but could not recognize that they are in same package and let > mysearchHandler to use filed of "isDistrib and requestInfo (with > package declare)" > > so i see that searchhandler is in solr-core jar file,.so i puth this > jarfile to my searchhandler jar file,and delete solr-core jar file > from lib of solr web-app and then restart solr."i do this because i > don't have a 2 jar file with same packae name ,and in run time solr > fo=ind out them in same package and let me to uyse 2 fileds" > > but after do that i try to start solr .but now solr did n't start and > i got this in command line: > > "solr could n't start after 30 second." // some thing like a timeout exception > > > so now i think maybe i select a wrong approach to expand my queries > and add wordnet to solr. > > and please describe how i can use synonym filter factory or tokenizar > that u said i can use them to expand query. > > tnx > > > On Sun, Jul 24, 2016 at 12:09 PM, Erik Hatcher <erik.hatc...@gmail.com> > wrote: > >> Have a look at Solr's source code and you will see many TokenFilter >> implementations. The synonym token filter is the closest to what you want. >> >> But maybe first - please detail (copy/paste) the exact error you were >> getting in your handler. It's still not my recommended approach but it >> sounds like you're new to Solr development and need to iron out some issues >> first. >> >> Erik >> >>> On Jul 24, 2016, at 13:20, sara hajili <hajili.s...@gmail.com> wrote: >>> >>> How i can implement this as q token filter.? >>> I wanna to expand query with wordnet. >>> So i try to implement my search handler. In this way i got solrparam. Q >>> And send it to wordnet and expand this. >>> I write this to mysearch handler. So when user insert a query like q=tree >>> and apple. >>> I expand this query with orange. >>>> On Jul 24, 2016 8:37 PM, "Erik Hatcher" <erik.hatc...@gmail.com> wrote: >>>> >>>> My first inclination would be to implement this as a TokenFilter >> instead. >>>> Can you provide some examples of what you want? >>>> >>>>> On Jul 24, 2016, at 08:22, sara hajili <hajili.s...@gmail.com> wrote: >>>>> >>>>> hi all. >>>>> i wanna to expand my queries with wordnet ... >>>>> so i try to write my own SearchHandler class."/mysearchHandler" >>>>> so i add new requestHandler in solr-config /mySearchHandler >>>>> but i faced with problem. i found some field that they were package >>>> access . >>>>> so i get access error in run query.(this field does n't have any getter >>>> to >>>>> use them) >>>>> and now my question is what is best approach to expand my queris with >>>>> wordnet? >>>>> is good to write my own searchHandler?and overwrite it to get my >> result? >>>>> tnx >>>> >>