This example shows how to use the search API to find substrings in the Quranic text. The program below performs two searches. The first search looks for occurrences of the the Sun, and the second search looks for occurrences of the the Moon. The TokenSearch class is used, which is initiated through calls to findSubstring() and findToken(). These methods specify search criteria. The getResults() method is used to perform the search, and returns the results as an analysis table.
Java Example
public class TokenSearchExample {
public static void main() {
// Search #1: The Sun.
searchSun();
// Search #2: The Moon.
searchMoon();
}
private static void searchSun() {
// Search for substring "$~amos" or exact token "$amosFA"
TokenSearch search = new TokenSearch(EncodingType.Buckwalter);
search.findSubstring("$~amos");
search.findToken("$amosFA");
// Display the results.
AnalysisTable table = search.getResults();
System.out.println(table);
System.out.println("Matches: " + table.getRowCount() + "\r\n");
}
private static void searchMoon() {
// Search for substring "qamar" or exact token "lo>ahil~api"
TokenSearch search = new TokenSearch(EncodingType.Buckwalter);
search.findSubstring("qamar");
search.findToken("{lo>ahil~api");
// Display the results.
AnalysisTable table = search.getResults();
System.out.println(table);
System.out.println("Matches: " + table.getRowCount() + "\r\n");
}
}
Program Output
ChapterNumber VerseNumber TokenNumber Token
------------- ----------- ----------- -----
2 258 29 bi{l$~amosi
6 78 3 {l$~amosa
6 96 6 wa{l$~amosa
7 54 20 wa{l$~amosa
10 5 4 {l$~amosa
12 4 11 wa{l$~amosa
13 2 13 {l$~amosa
14 33 3 {l$~amosa
16 12 5 wa{l$~amosa
17 78 4 {l$~amosi
18 17 2 {l$~amosa
18 86 5 {l$~amosi
18 90 5 {l$~amosi
20 130 10 {l$~amosi
21 33 6 wa{l$~amosa
22 18 13 wa{l$~amosu
25 45 14 {l$~amosa
27 24 4 lil$~amosi
29 61 8 {l$~amosa
31 29 14 {l$~amosa
35 13 10 {l$~amosa
36 38 1 wa{l$~amosu
36 40 2 {l$~amosu
39 5 14 {l$~amosa
41 37 5 wa{l$~amosu
41 37 9 lil$~amosi
50 39 10 {l$~amosi
55 5 1 {l$~amosu
71 16 6 {l$~amosa
75 9 2 {l$~amosu
76 13 8 $amosFA
81 1 2 {l$~amosu
91 1 1 wa{l$~amosi
Matches: 33
ChapterNumber VerseNumber TokenNumber Token
------------- ----------- ----------- -----
2 189 3 {lo>ahil~api
6 77 3 {loqamara
6 96 7 wa{loqamara
7 54 21 wa{loqamara
10 5 6 wa{loqamara
12 4 12 wa{loqamara
13 2 14 wa{loqamara
14 33 4 wa{loqamara
16 12 6 wa{loqamara
21 33 7 wa{loqamara
22 18 14 wa{loqamaru
25 61 10 waqamarFA
29 61 9 wa{loqamara
31 29 15 wa{loqamara
35 13 11 wa{loqamara
36 39 1 wa{loqamara
36 40 7 {loqamara
39 5 15 wa{loqamara
41 37 6 wa{loqamaru
41 37 11 liloqamari
54 1 4 {loqamaru
55 5 2 wa{loqamaru
71 16 2 {loqamara
74 32 2 wa{loqamari
75 8 2 {loqamaru
75 9 3 wa{loqamaru
84 18 1 wa{loqamari
91 2 1 wa{loqamari
Matches: 28
Discussion
Given the different morphological and lexical forms possible for the Sun and the Moon, a straightforward string comparison would not return the correct results. The above program uses the following search criteria:
- For the sun search, using Buckwalter transliteration we search for the substring "$~amos" (sun) or the exact token "$amosFA" (a sun).
- For the moon search, we search look for the substring "qamar" (moon) or the exact token "lo>ahil~api" (crescents).
The program output above shows that under these search conditions, there are 28 results for the moon search, and 33 results for the sun search.
See Also
- Java API Examples
- Search API - Documentation explaining how to perform searches

