#219: New site search implementation
- Proposed by
- Wichert Akkerman
- Proposal type
- User interface
- State
- draft
Motivation
Searching in Plone sites has a tendency to overwhelm the user with results that are not relevant. For example a user is interested in PAS and does a search on it on plone.org. The search results consists of lots of different types of items, many of which will not be relevant (PlonePAS releases, screenshots, etc.). Users have to wade through all of them to find the useful results.
The section-specific search improves this a lot, but is still not ideal.
Proposal
I propose to modify the search results for both live search and normal search to divide the results in different groups, giving the user a quick overview of the types of results and allowing him to get more results from a specific category.
The search results for both livesearch and normal search will show the available groups and for each group the best search results. By clicking on the group title a page will be shown with all results from that group (batched if needed). The livesearch on www.apple.com is an example of how this can work.
There can be two different ways of grouping search: type-based and category based.
- Type based grouping
- This works by grouping content types into groups. For example common groups can be documents (ATDocument, ATNewsItem, ATEvent) and files (ATFile, ATImage, blob files, etc.).
- Category based grouping
- Commonly a site hierarchy defines different categories. For example plone.org has separate trees for products, documentation and organisational information. I propose to add a 'this is a category' flag to the schema for folderish types. Enabling this makes a group a category that can be used for grouping.
Implementation
There are several products/packages affected by this proposal:
- plone.app.portlets: the search portlet needs to be updated
- plone.app.layout: this will gain the views and logic for the search pages
- CMFPlone: the current search templates and scripts here can be deprecated
- ATContentTypes: schema changes for the folder types are needed (see below)
To manage the type based grouping we will need a place to store the groups, their titles and content types. This can be done with a combination of a persistent local utility, a control panel and GS export/import handlers.
To manage category-based grouping a new marker interface will be used which can be toggled through a field on the schema. When searching we can quickly get the list of categories to used by looking in the catalog for all objects with that marked interface.
Deliverables
New versions of all packages and products mentioned under implementation.
Risks
This change will break customisations of the current search templates.
Progress log
A very basic implementation of type-based grouping which groups per individual type was made during the sprint at the Plone conference in Naples. This can act as a basis for the other changes.
Participants
Framework vote
Framework team vote
Framework team vote
Framework team vote
For 4.0?
Not lost at all
I still very much intent to implement this, but 4.0 is indeed a better target than 3.x.
Framework team vote