Solrは初めてです。一部のデータのインデックス作成に成功しましたが、適切なsolrフィールドに日付属性を渡した後、例外が発生します。
文字列「15.06.2011 13:51:41」を渡します。これはドイツなどの国で一般的な日付形式です。しかし、私が見つけたいくつかのグーグルの後、Solrは日付がUTC形式であることを期待しています。
私の具体的な質問は、Solrのある時点でフォーマットをUTCに変換できますか?これはDateFormatTransformerの場合でしょうか、それとも最初に正しい形式で渡す必要がありますか?
編集:DataImportHandlerを使用していません。データを直接Solrに渡してDirectUpdateHandler2を使用しています。これは「直接更新」と呼ばれているため、そこで何かを変換する可能性はかなり低いですか?
記録のために、私が得た例外は:
ERROR - 2013-09-13 15:52:07.705; org.Apache.solr.common.SolrException; org.Apache.solr.common.SolrException: Invalid Date String:'15.06.2011 13:51:41'
at org.Apache.solr.schema.DateField.parseMath(DateField.Java:182)
at org.Apache.solr.schema.TrieField.createField(TrieField.Java:616)
at org.Apache.solr.schema.TrieField.createFields(TrieField.Java:655)
at org.Apache.solr.schema.TrieDateField.createFields(TrieDateField.Java:157)
at org.Apache.solr.update.DocumentBuilder.addField(DocumentBuilder.Java:47)
at org.Apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.Java:118)
at org.Apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.Java:73)
at org.Apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.Java:210)
at org.Apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.Java:69)
at org.Apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.Java:51)
at org.Apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.Java:556)
at org.Apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.Java:692)
at org.Apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.Java:435)
at org.Apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.Java:100)
at org.Apache.solr.handler.extraction.ExtractingDocumentLoader.doAdd(ExtractingDocumentLoader.Java:121)
at org.Apache.solr.handler.extraction.ExtractingDocumentLoader.addDoc(ExtractingDocumentLoader.Java:126)
at org.Apache.solr.handler.extraction.ExtractingDocumentLoader.load(ExtractingDocumentLoader.Java:228)
at org.Apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.Java:74)
at org.Apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.Java:135)
at org.Apache.solr.core.RequestHandlers$LazyRequestHandlerWrapper.handleRequest(RequestHandlers.Java:241)
at org.Apache.solr.core.SolrCore.execute(SolrCore.Java:1904)
at org.Apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.Java:659)
at org.Apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.Java:362)
at org.Apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.Java:158)
at org.Eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.Java:1419)
at org.Eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.Java:455)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:137)
at org.Eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.Java:557)
at org.Eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.Java:231)
at org.Eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.Java:1075)
at org.Eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.Java:384)
at org.Eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.Java:193)
at org.Eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.Java:1009)
at org.Eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.Java:135)
at org.Eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.Java:255)
at org.Eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.Java:154)
at org.Eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.Java:116)
at org.Eclipse.jetty.server.Server.handle(Server.Java:368)
at org.Eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.Java:489)
at org.Eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.Java:53)
at org.Eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.Java:942)
at org.Eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.Java:1004)
at org.Eclipse.jetty.http.HttpParser.parseNext(HttpParser.Java:636)
at org.Eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.Java:235)
at org.Eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.Java:72)
at org.Eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.Java:264)
at org.Eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.Java:608)
at org.Eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.Java:543)
at Java.lang.Thread.run(Unknown Source)
Solr DateFieldのドキュメント によると、この形式は必須です。
日付フィールドは1995-12-31T23:59:59Zの形式にする必要があります。末尾の「Z」はUTC時間を示し、必須です(以下を参照) UTCの説明)。末尾の0で終わらない限り、オプションの小数秒を使用できます(ただし、ミリ秒を超える精度は無視されます)。他のすべてのパーツは必須です。
唯一のオプションは、Solrに送信する前に日付を変換することです。 DataImportHandlerを使用している場合は、そのコンテキスト/プロセス内で可能です。