You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tika.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2026/09/02 11:17:00 UTC

[jira] [Commented] (TIKA-4766) Replace tika-grpc fields map with a typed Document parse contract

    [ https://issues.apache.org/jira/browse/TIKA-4766?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18110598#comment-18110598 ] 

ASF GitHub Bot commented on TIKA-4766:
--------------------------------------

dpol1 commented on PR #2961:
URL: https://github.com/apache/tika/pull/2961#issuecomment-5508683356

   Rebased on `main` @1e3d8f88. One thing changed inside the first commit: #3108's `parse_context_json` gate (`buildRequestParseContext`) got a package-private overload so the v2 RPCs go through it too, and `runFetchAndParse` takes the validated `ParseContext` instead of the two JSON strings. Commits 2 and 3 are byte-identical.




> Replace tika-grpc fields map with a typed Document parse contract
> -----------------------------------------------------------------
>
>                 Key: TIKA-4766
>                 URL: https://issues.apache.org/jira/browse/TIKA-4766
>             Project: Tika
>          Issue Type: New Feature
>          Components: tika-pipes
>    Affects Versions: 4.0.0
>            Reporter: Kristian Rickert
>            Priority: Major
>              Labels: grpc, pipes, protobuf
>
> Replace the flat {{FetchAndParseReply.fields}} map ({{map<string,string>}}) with a typed parse result.
> Approach (reshaped from the original {{ParseResponse}} design after review in [PR #2916|https://github.com/apache/tika/pull/2916]): a single small {{Document}} proto (~200 lines) rather than per-format metadata messages.
> * *Content*: a structured markdown block tree -- headings, paragraphs, lists, tables, code blocks, inline runs (CommonMark + GFM) -- plus the rendered markdown string {{ToMarkdownContentHandler}} already produces (TIKA-4730).
> * *Typed common metadata*: title, authors, keywords, languages, created/modified as {{Timestamp}}s, page/word/character counts, dimensions, rights.
> * *Lossless tagged tail*: every remaining metadata key, multivalue-preserving, typed only where Tika's own {{Property}} declares a type, string otherwise -- never guessed.
> * *Embedded documents* recurse as fully typed child {{Document}}s.
> * Format specifics live in per-parser {{DocumentTransformer}} code ({{tika-grpc-mapper}}), never in the wire contract, so metadata churn never forces a client rebuild.
> Modules: {{tika-grpc-api}} (proto + generated messages + bundled {{FileDescriptorSet}}), {{tika-grpc-mapper}}, {{tika-grpc}} integration. Breaking change for clients reading {{fields}} (field number reserved).
> PR: [https://github.com/apache/tika/pull/2921] (supersedes [#2916|https://github.com/apache/tika/pull/2916])
> Follow-ups will be tracked in separate issues: pluggable external parsers (opaque {{Any}} extension results from registered gRPC services), and a Markdown input parser.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)