Details
-
Type:
New Feature
-
Status:
Open
-
Priority:
Critical
-
Resolution: Unresolved
-
Affects Version/s: DEV backlog
-
Fix Version/s: DEV backlog
-
Component/s: Database SQL/XMLDB
-
Labels:
-
Database:Any
Description
There are some places where relational searches aren't good at all, specially where looking against large text sets (forums, glossaries...).
To fix this we must use documental (fulltext) indexes. They allow to perform "instant" searches against text.
So, For 1.9 something like this must be done:
1- Analyze and document each RDBMS documental index support.
2- Implement creation and drop of documental indexes from XMLDB generators (XMLDB schema, XML files and, finally, generators)
3- Extend XMLDB tests to check this functionality (creation, searching and drop).
4- Make text_index_exists() to work when looking for this type of indexes.
5- Add support for doc. indexes within the XMLDB Editor (parser, editor...)
6- Modify searchlib (search_generate_text_SQL() function) to be able to generate the correct SQL statements under each RDBMS.
7- Create a bunch of settings ($CFG->forum_usetextsearches....) to tell Moodle where to perform documental searches, code should be able to determinate when the underlying index exists.
8- Modify cron by calling one database_cron() function to be able to perform indexes maintenance (sync, optimisation...).
That's all, for now.
For Moodle 1.8 a basic documental indexes functionality has been implemented to work exclusively under MySQL and forum searches. It requires manual creation of the index before enabling it. Look to forum_search_posts() for some more basic info.
Well ... remember we have the global search subproject which uses it's own index.
The Lucene engine is pretty powerful, allows consistent searching across all parts of Moodle, and most of the work is done (in moodle/search), however it's going to be tricky bringing roles into the picture (but possible I think).
Shouldn't we focus on that instead? Or should we change direction and use the native database for searching?