jerry-024 commented on PR #8000: URL: https://github.com/apache/paimon/pull/8000#issuecomment-4788116764
Review findings: 1. `ESIndexGlobalIndexReader` currently fails structured full-text queries. `FullTextReadImpl` can pass `Phrase`, `BooleanQuery`, `Boost`, and `MultiMatch` through to any backend that advertises `supportsFullTextSearch()`, but `ESIndexGlobalIndexReader.requireMatch()` throws for everything except `Match`. That means valid full-text reads against ES splits fail at runtime instead of being evaluated or falling back. Either implement these query shapes, avoid advertising support for queries this backend cannot serve, or make the planner/read path fall back before reaching this exception. 2. `ESIndexGlobalIndexerFactory.supportsFullTextSearch()` says FULLTEXT extra fields are supported, but the current full-text scan path only selects indexes whose queried text column is the primary `indexFieldId`. A hybrid index with vector as primary and text as an extra field will not produce `IndexFullTextSearchSplit`s for that text column, so full-text search on the extra field returns no indexed results. The scanner needs to include matching `extraFieldIds` as well, or this support claim should be narrowed to primary full-text fields only. 3. `global-index.es-index.read-search-threads` is effectively first-use-wins. Once one reader creates the static `readSearchExecutor`, later ES indexers with a different option value reuse the old pool, and even a later `0` cannot disable async search if the pool already exists. Since this option is table/read configuration, the factory should either scope/cache executors by resolved thread count or make the first-use global behavior explicit and reject conflicting values. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
