Proposals/Done/Search 2.0
From Mahara Wiki
< Proposals | Done
This is a proposal for improving the search experience in Mahara. It covers searching for users, groups and pages (views).
There are a few elements in here which aren't directly related to search but that are designed to provide more metadata and therefore improve the quality of searches.
Full text search
The main goal of this work is to add a universal search box to the home page which will search in:
- forums (title & description)
- forum threads (contents)
- views (title, description, tags)
- artefacts (tags, content)
- users (firstname, lastname, email)
- groups (name and description)
Note that searches will not pick up the content of blocks (e.g. Google Apps block, external feed block, etc.).
Search box
The universal search box will be done in a dashboard block. It can be removed by users but it's also visible for logged out users.
By default, it will appear above the "popular pages showcase" block.
The types of results you will get depend on the search plugin you have enabled. For example, there will be no full text search in the content of artefacts if using the internal plugin.
Search result page
The page will also use facets so that users can easily hide results in the categories they don't want to see (e.g. hiding the user account and group matches).
Clicking on a result will take you as close as possible to the result. For example, if an artefact matches one of the search terms, then clicking on that result will take you to the artefact page (which has a link back to the containing view) if it exists.
New parameter on paginated artefact pages
For artefact pages that are displayed using the pager (e.g. blog, blogpost, feedback, plans), we'll need to add a new query string parameter to tell the pager to display a particular page. This will allow us to link to the right page from the search result page.
Plugin architecture
Not sure about the state of the solr search plugin one but we're told it no longer works (see bug #680710) and we'll be using elasticsearch instead:
- documentation on how to setup elastic search will be provided
- Mahara will perform some sanity checks on your elastic search configuration to make sure everything is setup right (and display appropriate warnings if it's not)
- some debugging information will be available, along with a manual "reindex" button
The elasticsearch plugin will inherit from internal search and may in the future override methods that it can implement faster.
In order to get the universal search working, we'll add new methods to the internal search plugin which will only be implemented in elasticsearch. Search plugin writers may choose to implement them in their own plugins, but internal search is not going to have an implementation for it.
Hooks
Thanks to the existing search plugins, we already have a few hooks in Mahara that can be used to trigger the reindexing of some of the content.
We will be adding more hooks, for example to detect changes in the contents of artefacts.
Search improvements
Other things that we could improve later but that are out of scope at the moment:
- making sure there's only ever 1 search box per page (usability issue)
- migrating all slow searches to elasticsearch (while retaining the implementation in internal)
- search inside the contents of uploaded files (e.g. PDF, ODF, Word documents, text files)
Extra Tagging
Add user tags
We currently have tags for users but they are set by the system and are not user-editable.
We will make new types of tags which will be defined by each user in their profile area. They will be displayed as part of the Profile Info block.
Furthermore, these tags will be searchable in the "Find friends" and "Copy page" searches.
Add group tags
These tags will be defined by group owners in the group settings. They will be displayed as part of the Group Info block on the group homepage.
The tags will be searchable in the "Find groups" searches.
Group categories will be replaced with group tags.
Create a new "Page Tags" block
Users are already able to assign tags to the pages they create but these tags aren't displayed anywhere on these pages.
Landing pages for tags
When tags are displayed anywhere, it will be in the form of links that will lead to index/landing pages which will display other similar items.
There will therefore be three different landing pages displaying items:
- one for all users tagged with a particular tag (can be optionally restricted to one of the institution you belong to)
- one for publicly visible groups tagged with a particular tag
- one for pages (views) accessible to the current user and tagged with a particular tag