Sunday, August 24, 2008

A Closer Look at Zekr 0.7.0 Beta 2

Zekr 0.7.0 beta 2 was released last night, mainly introducing three new features. 1) Search through translations (both with Tanzil search method, and Lucene), 2) Quran Paging: how many (and which ayas) to be shown in each page of Zekr, and 3) Quran root and stem database, supporting searching through root references, with sorting options (by revelation order, natural order, relevance, and aya size).


Quran root and stem search is a unique feature introduced in this version of the software. Root database is kindly provided by CRCIS (Computer Research Center of Islamic Sciences). Here I deeply thank this center for providing such a valuable resource for Zekr project. This root database is bundled with Zekr under a restricted license agreement. You are not allowed to use this database anywhere unless you have a written permission from CRCIS.


Paging mode is another awaiting feature. We used to have rather heavy HTML pages containing thousands of Arabic characters, which made navigation too slow. From this version, there are 4 built-in paging mode, plus as many custom paging mode as one likes. By default an Uthmani paging mode is provided with all Zekr packages.


Paging modes are specially useful for our future exegesis (tafsir) support. Almost all new-style exegeses are section-by-section. Their authors divide Quran into several sections, each has a number of related ayas within it, and put their commentaries on each section overall. Having custom paging modes, one may provide a paging mode used for an exegesis. Authors commentaries then come at the end of the page.

"Go To" menu, previously available under View > Go To, is now provided as a separate menu, with a large choice of navigation options: aya by aya, sura by sura, juz by juz, and even navigating to the next sajda.


Searching through translations was supported very elementarily before 0.7.0. In 0.7.0 beta 1, as we totally rewrote the basic search Java code, it was temporarily removed from that version and now in beta 2 is available for both search methods: Basic, and Advanced (indexed).

There is a I18N option for people to customize how search works for a language, by providing search replacements string patterns or introducing their language stop-words for better search result. In Arabic, for example we provided several replacement rules (patterns) to remove diacritic for easier to ease query writing. AS another example, the following code (available in search-info.properties) is used to work with different kinds of YEH character in Persian translation search:

search.pattern.replace.fa = [\u0626\u0649\u064a]=\u06cc


Advanced search, already available just for searching through Quran text, now also works with translations, featuring powerful Lucene queries. There are a number of Western languages whose stemmer is provided built-in. Other users can use search-info.properties patterns, or write their own stemmers and Lucene analyzers for more practical advanced search.

This release is probably the last beta version in 0.7.0 branch, and the next will be final 0.7.0. The next release, will be provided inshaAllah before this Ramadan.