0

Solandra (Solr + Cassandra) をセットアップし、SolrJ ライブラリを使用して使用しようとしています。SolrJを使用してすべてをセットアップし、いくつかのドキュメントを追加することができましたが、クエリを作成しようとすると失敗しました。URLからクエリを実行しようとしましたが、失敗しました。私が使用した:

http://localhost:8983/solandra/my_core/select?q=*:*&wt=xml

そして私のアプリでは、次のコードを使用しました:

CommonsHttpSolrServer server = new CommonsHttpSolrServer(url);
server.setParser(new XMLResponseParser());
SolrQuery query = new SolrQuery();
query.setQuery("some"); 
query.setStart(0);
query.setRows(10); 
QueryResponse response = server.query(query); 

これは私が得たスタックトレースです:

org.apache.solr.common.SolrException: org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase) で org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:281) で java.lang.StackOverflowError .java:129) で org.apache.solr.core.SolrCore.execute(SolrCore.java:1368) で org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356) で solandra.SolandraDispatchFilter.execute( SolandraDispatchFilter.java:171) で org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252) で solandra.SolandraDispatchFilter.doFilter(SolandraDispatchFilter.java:137) で org.mortbay.jetty.servlet.ServletHandler$CachedChain .doFilter(ServletHandler.java:1212) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) org .mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928) ) org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) で org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) で org.mortbay.jetty.HttpConnection.handle(HttpConnection.java: 404) org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) で org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) で 原因: java.lang.StackOverflowErrorジャバで。net.SocketInputStream.socketRead0(Native Method) で java.net.SocketInputStream.read(SocketInputStream.java:150) で java.net.SocketInputStream.read(SocketInputStream.java:121) で java.io.BufferedInputStream.fill(BufferedInputStream. java:235) で java.io.BufferedInputStream.read(BufferedInputStream.java:254) で org.apache.commons.httpclient.HttpConnection.isStale(HttpConnection.java:506) で org.apache.commons.httpclient.HttpConnection.closeIfStale (HttpConnection.java:431) org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.closeIfStale(MultiThreadedHttpConnectionManager.java:1313) で org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:382) で org. org.apache の apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)。commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request( CommonsHttpSolrServer.java:422) の org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:244) の org.apache.solr.handler.component.HttpCommComponent$1.call(SearchHandler.java:421) ) org.apache.solr.handler.component.HttpCommComponent$1.call(SearchHandler.java:393) で java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) で java.util.concurrent.FutureTask で.run(FutureTask.java:166) で java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) で java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) で java. util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread .run(Thread.java:722)

schema.xml で何かを見逃したのでしょうか? これは次のようになります。

<schema name="my_core" version="1.1">
 <types>
  <fieldType name="string" class="solr.StrField"/>
  <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>
</types>
 <fields>
    <field name="url"   type="string" indexed="true" stored="true"/>
    <field name="content"  type="text_general_rev" indexed="true"  stored="true"/>
    <field name="media"  type="string" indexed="true"  stored="true"/>
    <field name="country"  type="string" indexed="true"  stored="true"/>
    <field name="date"  type="string" indexed="true"  stored="true"/>
 </fields>

<defaultSearchField>content</defaultSearchField>
<uniqueKey>url</uniqueKey>

</schema>
4

1 に答える 1

1

私はそれを解決しました。solandra.in.env ファイル内のスタック サイズを増やしました。したがって、誰かが同じ問題を抱えている場合は、-Xss512k パラメータを設定しました。

于 2013-07-15T20:13:21.440 に答える