docs(15.9): document the new 15.9 features - #565
Merged
Merged
Conversation
The default index.backup.log.targets now includes chat_log.ndjson, the AI chat usage log, so the backup screen and GET /api/admin/backup/files offer 11 targets. Add it to the backup guide and to the API example.
With incremental crawling on, a re-crawl does not fetch a file whose modification time has not changed, so files indexed before OCR was turned on keep their old content. Add a note to the OCR page on how to apply OCR to them.
…of fess-setup - --repository accepts a file:/// URL naming a local copy of the Maven repository (the directory that corresponds to .../org/codelibs/fess/), for servers with no route to the Internet; the offline section points to it as an alternative to copying jars. - install plugin accepts only the plugin types Fess loads and refuses any other name, fess-theme-* included, with exit code 2 before downloading anything.
The theme entry HTML sends frame-ancestors 'none' and X-Frame-Options: DENY. The frame-ancestors value now comes from theme.index.frame.ancestors; an empty value drops the directive, which lets WebKit-based browsers show the blob: frames of a theme (PDF preview, cached copy) while X-Frame-Options still keeps the page out of frames.
…l GET behavior - Crawl-delay applies per origin, capped at 60 seconds; robots.txt is read per RFC 9309 (longest match, start URLs checked, disallowed URLs logged at INFO and not recorded as failure URLs). - 429/503 responses are retried up to three times after Retry-After or an exponential wait of 10 seconds to 5 minutes. - An unavailable robots.txt now keeps the origin out of the crawl after three retries; client.robotsTxtAllowOnUnavailable=true restores the earlier allow-all behavior. - Incremental crawling sends a conditional GET (If-None-Match / If-Modified-Since) when the HEAD Last-Modified cannot decide, and a 304 page is treated as unchanged.
…dled mapping The bundled mapping.txt now also folds ゐ/ゑ, the remaining small kana, ゝ/ゞ and the ヴ spellings, and a new prolonged_sound_mark_filter turns dashes written after kana into ー. Describe what the bundled dictionaries normalize and that an existing index needs a reindex with "Reset Dictionaries" to use them.
Crawled files now carry the file owner (SMB, file system and FTP) and the last modifier (the extracted last author, or the owner). List both keyword fields on the field search page, with what fills them, example queries and the two settings that turn them off.
The Related Query page has a "Generate from Search Logs" button that turns frequent query refinements in recent search logs into related queries. Describe how a refinement is found, the safeguards (guest visible logs only, plain queries only, bad words, minimum sessions, per virtual host, existing terms untouched, cache capacity), when the button is unavailable and the related_query.generate.* settings.
The Search Log page is now an analytics dashboard. Rewrite the guide for it: the period, comparison and access type filters; the Overview, Queries, Clicks, Performance, Audience (including searches by role and group) and AI Chat tabs; drilling from a zero-hit query into the matching logs; CSV downloads of every report and of the filtered logs (encoding, byte order mark and formula guard); and the log list with its hit count filter.
System Info > Document Report lists groups of duplicate documents (by the content signature computed at index time) and dormant documents not modified for N days, optionally only those never opened from search results, both narrowed by URL prefix and downloadable as CSV. Add a page for it with its roles, limits, unavailable mappings and docreport.* settings, and link it from the administrator guide.
A label now has a kind, label or tag. Logged-in users can tag search results when user.tag.enabled is true; each tag is a label of the kind tag whose permissions decide who sees it. Describe the Kind field and how tags are stored, shared, merged by name, limited and reflected in the index.
- GET /api/v2/search-history returns the logged-in user's recent
searches (search.history.enabled, search.history.size).
- GET /api/v2/documents/export downloads search results as CSV or JSON
(api.search.export*, off by default).
- GET/POST/DELETE /api/v2/documents/{docId}/tags list, add and remove
user tags (user.tag.*, off by default).
Also list the search_history, search_export and user_tag flags of
/api/v2/ui/config and add the pages to the API guide.
marevol
added a commit
that referenced
this pull request
Oct 4, 2026
This follows codelibs/fess#3551, which replaces the user tags that were labels of the kind "tag" with per-user tags in the fess_config.tag_type index, and replaces the tag documentation added in #565. - api/api-tag.rst: the new endpoints (GET/POST /api/v2/tags, PUT/DELETE /api/v2/tags/{id}, GET/POST /api/v2/documents/{docId}/tags and DELETE /api/v2/documents/{docId}/tags/{id}) with their login and CSRF requirements, examples and errors; private and shared tags; the tags of search hits, the tag facet and fields.tag filtering; the delay until the per-minute log_aggregator job applies the queued changes; and the user.tag.* settings. - admin/tagtype-guide.rst: a new page for the admin Tag screen, its fields, sharing, how changes reach documents through the queue and the tag_updater job, and notes for operators. It is listed after the label page in the administrator guide. - admin/labeltype-guide.rst: back to its content before #565, without the Kind field and the user tag section. - api/api-uiconfig.rst: features.user_tag describes the new feature. - api/admin/api-admin-tagtype.rst: a new page for /api/admin/tagtype, listed after the label type API. Updates send seq_no and primary_term from GET setting/{id}; a stale pair or a name the owner already uses fails with a validation error. - config/properties.rst and properties.po: only the rows the pull request changes are applied (user.tag.*, index.field.tag, page.tagtype.max.fetch.size, online.help.name.tagtype and the default of index.export.exclude.fields), rendered with the generator's own functions so the pages still pass --check.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Documents the Fess 15.9 features that had no description yet. All changes are in the 15.9 (development) tree, in all seven languages (ja, en, de, es, fr, ko, zh-cn). Facts were taken from the fess source at the 15.9 head (config keys and defaults from
fess_config.properties, screen names from the label bundles, API shapes fromopenapi-user.yaml).admin/searchlog-guide.rst(rewritten)admin/relatedquery-guide.rstadmin/docreport-guide.rst(new),admin/index.rstowner/last_modifierfieldsuser/search-field.rstapi/api-search-history.rst(new)api/api-export.rst(new)admin/labeltype-guide.rst,api/api-tag.rst(new)features.search_history/search_export/user_tagapi/api-uiconfig.rst,api/index.rstconfig/rate-limiting.rst,admin/general-guide.rstadmin/mapping-guide.rsttheme.index.frame.ancestorsdev/theme-development.rstfess-setup --repository file:///and the plugin type checkinstall/fess-setup.rstchat_log.ndjsonbackup targetadmin/backup-guide.rst,api/admin/api-admin-backup.rstconfig/crawler-ocr.rstNot included
config/properties.rstis generated fromfess_config.propertiesand still lacks the new keys. Regenerating it needs translations in each language'sproperties.po, so it is left for a separate change.install/upgrade.rstandinstall/prerequisites.rstare handled separately.Checks
doctitle_xform=False): no new warnings compared withmain, one top-level section per page, and no unrendered inline markup.:doc:reference in the changed pages resolves to an existing file.