2013-03-05 21 views
1

我正在使用Neo4j-community-1.9.M04,與python休息客戶端(py2neo 1.4.5)連接。 當我嘗試向索引添加長文本時,服務器返回500內部服務器錯誤。當向索引添加長文本時,Neo4j - 500內部服務器錯誤

使用py2neo客戶端,我是這樣的:

everything_idx = gdb.get_or_create_index(neo4j.Node, "everything", config={"type": "fulltext"}) 
everything_idx.add("everything", long_text, recommendation_node) 

哪裏long_text是從URL和recommendation_node解析含有可變文本節點比如我想要索引。

這是我在py2neo日誌:

INFO 2013-03-05 11:47:17,855 rest 11104 1108 POST /db/data/index/node/everything {'Content-Type': 'application/json', 'X-Stream': 'true', 'Accept': 'application/json', 'User-Agent': 'py2neo/1.4.6 (win32; python/2.7.2)'} (47486 bytes) 
INFO 2013-03-05 11:47:17,894 rest 11104 1108 500 Internal Server Error {'content-length': '0', 'server': 'Jetty(6.1.25)'} 

在Neo4j的日誌,我有以下幾點: 的console.log:

11:47:19.733 [[email protected]] WARN org.mortbay.log - header full: java.lang.ArrayIndexOutOfBoundsException 
11:47:19.734 [[email protected]] ERROR org.mortbay.log - /db/data/index/node/everything 
javax.ws.rs.WebApplicationException: null 
     at org.neo4j.server.rest.repr.OutputFormat$1.write(OutputFormat.java:156) ~[neo4j-server-1.9.M04.jar:1.9.M04] 
     at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:71) ~[jersey-core-1.9.jar:1.9] 
     at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:57) ~[jersey-core-1.9.jar:1.9] 
     at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) ~[jersey-server-1.9.jar:1.9] 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437) ~[jersey-server-1.9.jar:1.9] 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) ~[jersey-server-1.9.jar:1.9] 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) ~[jersey-server-1.9.jar:1.9] 
     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) ~[jersey-server-1.9.jar:1.9] 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) ~[jersey-server-1.9.jar:1.9] 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) ~[jersey-server-1.9.jar:1.9] 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) ~[servlet-api-2.5-20081211.jar:na] 
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) ~[jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) ~[jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.Server.handle(Server.java:326) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) [jetty-6.1.25.jar:6.1.25] 
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) [jetty-util-6.1.25.jar:6.1.25] 

和neo4j.0.0.log:

Mar 5, 2013 11:47:19 AM com.sun.jersey.server.impl.application.WebApplicationImpl _handleRequest 
SEVERE: The response of the WebApplicationException cannot be utilized as the response is already committed. Re-throwing to the HTTP container 
javax.ws.rs.WebApplicationException 
     at org.neo4j.server.rest.repr.OutputFormat$1.write(OutputFormat.java:156) 
     at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:71) 
     at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:57) 
     at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) 
     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) 
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
     at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
     at org.mortbay.jetty.Server.handle(Server.java:326) 
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
     at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943) 
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) 
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) 
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

我認爲問題可能是我使用的其他客戶端,所以我改變了它(我試過neo4jrestclient第一)。

任何想法?

+0

你可以嘗試省略此PARAM的要求嗎? ''X-Stream':'true'' – ulkas 2013-03-05 10:53:23

+0

你的長文本有多長?我認爲它試圖創建一個位置標題,這對全文索引沒有意義。請提出一個girhub問題http://github.com/neo4j/neo4j/issues – 2013-03-05 11:07:15

+0

沒有改變 – 2013-03-05 11:18:40

回答

1

原來,將此節點添加到全文索引失敗的原因是它沒有在事務中執行。 我試着用下面的代碼,使用neo4jrestclient與事務和它的作品:

import urllib2, logging, logging.config, pdb, traceback 
from neo4jrestclient.client import GraphDatabase, Node, Relationship 

gdb = GraphDatabase("http://localhost:7474/db/data/") 

everything_idx = gdb.nodes.indexes.create("everything_", type="fulltext", provider="lucene") 
node = gdb.node(name="Node1") 

with gdb.transaction() as tx: 
    try: 
     request = urllib2.urlopen("http://www.tripadvisor.com/Restaurant_Review-g35805-d451303-Reviews-Ramova_Grill-Chicago_Illinois.html") 

     if request.getcode() == 200: 
      long_text = unicode(request.read(), "utf-8") 
      everything_idx["everything"][long_text] = node 
    except Exception as e: 
     pdb.set_trace() 
+0

感謝您回來這個! – 2013-03-07 10:43:39