src/jdict/DictIndex.java
author viric@llimona
Sat, 18 Aug 2007 23:18:41 +0200
changeset 43 988a367ae8d2
parent 38 45c0a27c902f
permissions -rw-r--r--
Fixing a bug on the threshold between Binary Search and Prefix Sequence search
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     1
package jdict;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     2
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     3
import java.io.*;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     4
import java.util.Vector;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     5
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     6
public class DictIndex
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     7
{
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
     8
    BlockFile in;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
     9
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    10
    String index_basename;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    11
    String defs_basename;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    12
    int index_id;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    13
37
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    14
    int top_index; /* File size of the Index file */
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    15
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    16
    Vector first_words;
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    17
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    18
    public DictIndex(String dictname)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    19
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
    20
        index_basename = "/dicts/x-" + dictname + ".index";
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
    21
        in = new BlockFile(index_basename);
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    22
        get_top_index();
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
    23
        /*
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
    24
        System.gc();
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
    25
        Main.showMem();
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
    26
        */
37
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    27
        prepare_first_words();
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
    28
        in.enableMarks();
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    29
    }
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
    30
37
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    31
    public void prepare_first_words()
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    32
    {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    33
        int bsize = in.get_block_size();
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    34
        int max_blocks = top_index / bsize;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    35
        int i;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    36
        String str;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    37
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
    38
        if (max_blocks * bsize < top_index)
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
    39
            max_blocks++;
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
    40
37
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    41
        first_words = new Vector();
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    42
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    43
        /* We assume offset 0 */
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    44
        
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    45
        /* First word appart */
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    46
        str = getName();
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    47
        first_words.addElement(new FirstWord(str, 0));
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    48
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    49
        /* Next words */
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    50
        for(i=1; i<max_blocks; ++i)
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    51
        {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    52
            int offset = bsize * i;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    53
            int pos;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    54
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    55
            try {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    56
                in.seekFromStart(offset);
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    57
            } catch (IOException e)
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    58
            {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    59
                System.out.println("Cannot go back to start in First Words.");
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    60
                break;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    61
            }
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    62
            readUntilNewLine();
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    63
            pos = in.getAbsPos();
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    64
            str = getName();
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    65
            first_words.addElement(new FirstWord(str, pos));
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    66
            System.out.println("New first word: " +
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    67
                    str + " - " + new Integer(pos).toString());
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    68
        }
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    69
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    70
        try {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    71
            in.seekFromStart(0);
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    72
        } catch (IOException e)
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    73
        {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    74
            System.out.println("Cannot go back to start in First Words.");
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    75
            return;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    76
        }
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    77
    }
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    78
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    79
    public int [] getBlockBounds(String word)
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    80
    {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    81
        int i;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    82
        int res[] = new int[2];
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    83
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    84
        res[0] = 0;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    85
        res[1] = top_index;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    86
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    87
        for(i=0; i < first_words.size(); ++i)
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    88
        {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    89
            FirstWord tmp;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    90
            int cmp;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    91
            int pos;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    92
            tmp = (FirstWord) first_words.elementAt(i);
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    93
            pos = tmp.getPos();
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    94
            cmp = word.compareTo(tmp.getString());
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    95
            if (cmp <= 0)
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    96
            {
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    97
                res[1] = pos;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    98
                break;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
    99
            }
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   100
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   101
            res[0] = pos;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   102
        }
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   103
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   104
        return res;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   105
    }
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   106
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   107
    private void get_top_index()
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   108
    {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   109
        InputStream bfile = getClass().getResourceAsStream("/dicts/TOPINDEX");
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   110
        /* 10 bytes is enough for a simple int */
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   111
        byte array[] = new byte[10];
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   112
        int total;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   113
        try {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   114
            total = bfile.read(array, 0, 10);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   115
        } catch (IOException e)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   116
        {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   117
            System.out.println("Cannot open TOPINDEX.");
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   118
            top_index = 0;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   119
            return;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   120
        }
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   121
        /* This will have '\n' */
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   122
        String str = new String(array, 0, total - 1 /* - \n */);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   123
        top_index = Integer.parseInt(str);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   124
        System.out.println("Top Index: " +
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   125
                new Integer(top_index).toString());
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   126
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   127
36
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   128
    public String  getName()
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   129
    {
25
764c48b54327 Riparitaj eraretoj.
viric@llimona
parents: 21
diff changeset
   130
        byte tmp[] = new byte[100];
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   131
        int i;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   132
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   133
        i = 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   134
        do
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   135
        {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   136
            try {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   137
                int c = in.read();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   138
                if (c == -1)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   139
                {
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   140
                    System.out.println("EOF in getName");
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   141
                    break;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   142
                }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   143
                tmp[i] = (byte) c;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   144
            } catch (IOException e)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   145
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   146
                System.out.println("IO Exception: " +  e.getMessage());
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   147
                break;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   148
            }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   149
            i += 1;
25
764c48b54327 Riparitaj eraretoj.
viric@llimona
parents: 21
diff changeset
   150
        } while (tmp[i-1] != '\t' /* tab */ && i < 100);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   151
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   152
        if (i == 51 || i == 0)
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   153
            return null;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   154
8
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   155
        String result;
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   156
        try {
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   157
            result = new String(tmp, 0, i-1, "UTF-8");
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   158
        } catch (UnsupportedEncodingException e)
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   159
        {
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   160
            System.out.println("Unsupported encoding.");
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   161
            return null;
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   162
        }
36
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   163
8
3ed655975dcf Added encoding UTF-8 on Index getName().
viric@llimona
parents: 2
diff changeset
   164
        return result;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   165
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   166
36
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   167
    public byte[]  getNameBytes()
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   168
    {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   169
        byte tmp[] = new byte[100];
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   170
        int i;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   171
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   172
        i = 0;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   173
        do
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   174
        {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   175
            try {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   176
                int c = in.read();
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   177
                if (c == -1)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   178
                {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   179
                    System.out.println("EOF in getName");
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   180
                    break;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   181
                }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   182
                tmp[i] = (byte) c;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   183
            } catch (IOException e)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   184
            {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   185
                System.out.println("IO Exception: " +  e.getMessage());
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   186
                break;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   187
            }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   188
            i += 1;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   189
        } while (tmp[i-1] != '\t' /* tab */ && i < 100);
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   190
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   191
        if (i == 51 || i == 0)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   192
            return null;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   193
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   194
        return tmp;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   195
    }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   196
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   197
    public int getLength()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   198
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   199
        /* We reuse getOffset, as it breaks on \n too */
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   200
        return getOffset();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   201
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   202
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   203
    public int getOffset()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   204
    {
25
764c48b54327 Riparitaj eraretoj.
viric@llimona
parents: 21
diff changeset
   205
        byte tmp[] = new byte[100];
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   206
        int i;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   207
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   208
        i = 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   209
        do
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   210
        {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   211
            try {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   212
                int c = in.read();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   213
                if (c == -1)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   214
                {
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   215
                    System.out.println("EOF in getOffest");
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   216
                    return -1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   217
                }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   218
                tmp[i] = (byte) c;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   219
            } catch (IOException e)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   220
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   221
                System.out.println("IO Exception: " +  e.getMessage());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   222
                return -1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   223
            }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   224
            i += 1;
25
764c48b54327 Riparitaj eraretoj.
viric@llimona
parents: 21
diff changeset
   225
        } while (tmp[i-1] != '\t' /* tab */ && tmp[i-1] != '\n' && i < 100);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   226
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   227
        if (i == 51)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   228
            return -1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   229
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   230
        return IA5toNumber(tmp, i-1);
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   231
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   232
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   233
    public void readUntilNewLine()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   234
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   235
        byte tmp;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   236
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   237
        do
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   238
        {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   239
            try {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   240
                int c = in.read();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   241
                if (c == -1)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   242
                {
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   243
                    System.out.println("EOF in readUntilNewLine");
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   244
                    return;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   245
                }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   246
                tmp = (byte) c;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   247
            } catch (IOException e)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   248
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   249
                System.out.println("IO Exception: " +  e.getMessage());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   250
                return;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   251
            }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   252
        } while (tmp != '\n');
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   253
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   254
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   255
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   256
    public int IA5value(byte letter)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   257
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   258
        switch(letter)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   259
        {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   260
            case 'A': return 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   261
            case 'B': return 1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   262
            case 'C': return 2;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   263
            case 'D': return 3;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   264
            case 'E': return 4;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   265
            case 'F': return 5;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   266
            case 'G': return 6;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   267
            case 'H': return 7;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   268
            case 'I': return 8;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   269
            case 'J': return 9;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   270
            case 'K': return 10;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   271
            case 'L': return 11;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   272
            case 'M': return 12;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   273
            case 'N': return 13;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   274
            case 'O': return 14;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   275
            case 'P': return 15;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   276
            case 'Q': return 16;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   277
            case 'R': return 17;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   278
            case 'S': return 18;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   279
            case 'T': return 19;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   280
            case 'U': return 20;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   281
            case 'V': return 21;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   282
            case 'W': return 22;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   283
            case 'X': return 23;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   284
            case 'Y': return 24;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   285
            case 'Z': return 25;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   286
            case 'a': return 26;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   287
            case 'b': return 27;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   288
            case 'c': return 28;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   289
            case 'd': return 29;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   290
            case 'e': return 30;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   291
            case 'f': return 31;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   292
            case 'g': return 32;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   293
            case 'h': return 33;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   294
            case 'i': return 34;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   295
            case 'j': return 35;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   296
            case 'k': return 36;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   297
            case 'l': return 37;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   298
            case 'm': return 38;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   299
            case 'n': return 39;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   300
            case 'o': return 40;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   301
            case 'p': return 41;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   302
            case 'q': return 42;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   303
            case 'r': return 43;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   304
            case 's': return 44;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   305
            case 't': return 45;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   306
            case 'u': return 46;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   307
            case 'v': return 47;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   308
            case 'w': return 48;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   309
            case 'x': return 49;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   310
            case 'y': return 50;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   311
            case 'z': return 51;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   312
            case '0': return 52;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   313
            case '1': return 53;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   314
            case '2': return 54;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   315
            case '3': return 55;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   316
            case '4': return 56;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   317
            case '5': return 57;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   318
            case '6': return 58;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   319
            case '7': return 59;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   320
            case '8': return 60;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   321
            case '9': return 61;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   322
            case '+': return 62;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   323
            case '/': return 63;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   324
            default:
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   325
                      return 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   326
        }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   327
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   328
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   329
    public int IA5toNumber(byte array[], int length)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   330
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   331
        int i = 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   332
        int value = 0;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   333
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   334
        while (i < length)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   335
        {
15
b3cd84530d9a Removed traces.
viric@mandarina
parents: 14
diff changeset
   336
            /* DEBUG
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   337
            System.out.println("Value1: " + new Integer(value).toString());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   338
            System.out.println("Array[i]: " + (char) array[i]);
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   339
            System.out.println("IA5Value: " +
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   340
                    new Integer(IA5value(array[i])).toString());
15
b3cd84530d9a Removed traces.
viric@mandarina
parents: 14
diff changeset
   341
                    */
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   342
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   343
            value = IA5value(array[i]) + value * 64;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   344
32
675aa2bcc24e Commented some debug traces.
viric@llimona
parents: 31
diff changeset
   345
            /*System.out.println("Value2: " + new Integer(value).toString());
675aa2bcc24e Commented some debug traces.
viric@llimona
parents: 31
diff changeset
   346
             * */
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   347
            i += 1;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   348
        }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   349
        return value;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   350
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   351
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   352
    public String EntryToString()
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   353
    {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   354
        String name = getName();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   355
        int offset = getOffset();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   356
        int length = getLength();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   357
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   358
        return new String(name + " " + new Integer(offset).toString() +
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   359
                " " + new Integer(length).toString());
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   360
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   361
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   362
    public boolean WordMatches(String w1, String w2)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   363
    {
2
88b94872d8f9 Finer version.
viric@llimona
parents: 0
diff changeset
   364
        /* System.out.println("Comparing " + w1 + " to " + w2);*/
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   365
        if (w1.equals(w2))
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   366
            return true;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   367
        return false;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   368
    }
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   369
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   370
    public Vector SearchDefinition(String word)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   371
    {
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   372
        return SearchDefinition(word, -1);
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   373
    }
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   374
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   375
    /* if max >0, limit the search. */
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   376
    public Vector SearchDefinition(String word, int max)
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   377
    {
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   378
        try {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   379
            in.seekFromStart(0);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   380
        } catch (IOException e)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   381
        {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   382
            System.out.println("Cannot go back to start in search def.");
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   383
        }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   384
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   385
        Vector results = new Vector();
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   386
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   387
        return SearchNextDefinition(results, word, max);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   388
    }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   389
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   390
    /* if max >0, limit the search. */
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   391
    public Vector SearchNextDefinition(Vector results, String word, int max)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   392
    {
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   393
        int count = 0;
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   394
        System.out.println("Searching " + word);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   395
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   396
        String test;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   397
        do
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   398
        {
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   399
            if (max > 0 && count > max)
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   400
            {
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   401
                /* Void results */
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   402
                break;
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   403
            }
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   404
            test = getName();
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   405
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   406
            if (test == null)
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   407
                break;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   408
            if (WordMatches(word,test))
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   409
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   410
                int offset = getOffset();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   411
                int length = getLength();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   412
                System.out.println("Definition for " + word + " at " +
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   413
                        new Integer(offset).toString() +  " length " +
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   414
                        new Integer(length).toString());
19
6320751cad22 Added resultlist
viric@mandarina
parents: 15
diff changeset
   415
                /*String definition = defs.getDefinition(offset, length);*/
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   416
                Vorto vorto = new Vorto(test, offset, length);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   417
19
6320751cad22 Added resultlist
viric@mandarina
parents: 15
diff changeset
   418
                results.addElement(vorto);
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   419
            } else
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   420
            {
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   421
                readUntilNewLine();
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   422
            }
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   423
            ++count;
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   424
        } while (test != null);
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   425
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   426
        return results;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   427
    }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   428
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   429
    /* if max >0, limit the search. */
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   430
    public Vector SearchNextPrefixes(Vector results, String word, int max)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   431
    {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   432
        int count = 0;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   433
        System.out.println("Searching " + word);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   434
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   435
        String test;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   436
        do
14
8d3d102cc5e3 Added "Dictionary information"
viric@llimona
parents: 11
diff changeset
   437
        {
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   438
            if (max > 0 && count > max)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   439
            {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   440
                /* Void results */
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   441
                break;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   442
            }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   443
            test = getName();
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   444
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   445
            if (test == null)
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   446
                break;
43
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   447
            boolean does_start_with;
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   448
            does_start_with = test.startsWith(word);
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   449
            System.out.println("Prefix linear comparing to " + test +
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   450
                    ": " + does_start_with);
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   451
            if (does_start_with)
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   452
            {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   453
                int offset = getOffset();
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   454
                int length = getLength();
28
dccb4ae23699 Fixed some bugs in index search.
viric@llimona
parents: 25
diff changeset
   455
                System.out.println("Definition for " + word + "("
dccb4ae23699 Fixed some bugs in index search.
viric@llimona
parents: 25
diff changeset
   456
                        + test + ") at " +
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   457
                        new Integer(offset).toString() +  " length " +
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   458
                        new Integer(length).toString());
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   459
                /*String definition = defs.getDefinition(offset, length);*/
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   460
                Vorto vorto = new Vorto(test, offset, length);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   461
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   462
                results.addElement(vorto);
32
675aa2bcc24e Commented some debug traces.
viric@llimona
parents: 31
diff changeset
   463
                /*
28
dccb4ae23699 Fixed some bugs in index search.
viric@llimona
parents: 25
diff changeset
   464
                System.out.println("Until now: " +
32
675aa2bcc24e Commented some debug traces.
viric@llimona
parents: 31
diff changeset
   465
                        new Integer(results.size()).toString()); */
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   466
            } else
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   467
            {
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   468
                break;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   469
            }
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   470
            ++count;
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   471
        } while (test != null);
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   472
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   473
        return results;
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   474
    }
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   475
36
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   476
    private boolean byteStartsWith(byte a1[], byte a2[])
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   477
    {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   478
        int i;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   479
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   480
        i = 0;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   481
        do
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   482
        {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   483
            if (a1[i] != a2[i])
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   484
                return false;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   485
            ++i;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   486
        }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   487
        while (i < a1.length);
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   488
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   489
        return true;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   490
    }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   491
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   492
    private int byteCompare(byte a1[], byte a2[])
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   493
    {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   494
        int i;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   495
        int min;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   496
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   497
        min = a1.length;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   498
        if (a2.length < min)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   499
            min = a2.length;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   500
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   501
        i = 0;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   502
        do
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   503
        {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   504
            if (a1[i] < a2[i])
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   505
                return -1;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   506
            else if (a1[i] > a2[i])
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   507
                return 1;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   508
            ++i;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   509
        }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   510
        while (i < min);
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   511
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   512
        if (i < a1.length)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   513
            return 1;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   514
        else if (i < a2.length)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   515
            return -1;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   516
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   517
        return 0;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   518
    }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   519
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   520
    public String bytesToString(byte a[])
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   521
    {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   522
        String result;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   523
        try {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   524
            result = new String(a, 0, a.length, "UTF-8");
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   525
        } catch (UnsupportedEncodingException e)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   526
        {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   527
            System.out.println("Unsupported encoding.");
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   528
            result = null;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   529
        }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   530
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   531
        return result;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   532
    }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   533
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   534
    public byte[] stringToBytes(String s)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   535
    {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   536
        byte res[] = {};
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   537
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   538
        try {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   539
            res = s.getBytes("UTF-8");
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   540
        } catch (UnsupportedEncodingException e)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   541
        {
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   542
            System.out.println("Unsupported encoding.");
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   543
        }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   544
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   545
        return res;
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   546
    }
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   547
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   548
    public Vector BinarySearchDefinition(String word)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   549
    {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   550
        Vector results = new Vector();
37
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   551
        int bounds[];
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   552
        int pivot = top_index / 2;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   553
        int step = top_index / 2;
31
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   554
        boolean found = false;
43
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   555
        boolean found_laste = false;
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   556
        String test;
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   557
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   558
        /*
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   559
        System.gc();
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   560
        */
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   561
        Main.showMem();
36
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   562
37
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   563
        bounds = getBlockBounds(word);
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   564
        final int min = bounds[0];
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   565
        final int max = bounds[1];
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   566
        pivot = min + ((max - min) / 2);
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   567
        step = (max - min) / 2;
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   568
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   569
        System.out.println("Block bounds: " +
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   570
                new Integer(min).toString() + " to " +
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   571
                new Integer(max).toString());
509497421b36 Faster Search - NOT WORKING.
viric@llimona
parents: 36
diff changeset
   572
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   573
        /*
36
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   574
        targetword = stringToBytes(word);
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   575
        if (targetword.length == 0)
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   576
            return null;
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   577
            */
36
9d677f961a96 Byte-array comparision in binary search.
viric@llimona
parents: 35
diff changeset
   578
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   579
        do
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   580
        {
28
dccb4ae23699 Fixed some bugs in index search.
viric@llimona
parents: 25
diff changeset
   581
            /*
dccb4ae23699 Fixed some bugs in index search.
viric@llimona
parents: 25
diff changeset
   582
             * System.out.println("Pivoting to " +
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   583
                    new Integer(pivot).toString());
28
dccb4ae23699 Fixed some bugs in index search.
viric@llimona
parents: 25
diff changeset
   584
                    */
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   585
            try {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   586
                in.seekFromStart(pivot);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   587
            } catch (IOException e)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   588
            {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   589
                System.out.println("Seek from start error");
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   590
                return results;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   591
            }
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   592
            /*System.out.println("Searching new line");*/
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   593
            readUntilNewLine();
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   594
            /*System.out.println("Getting name bytes");*/
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   595
            test = getName();
31
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   596
            if (test == null) /* EOF probably */
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   597
            {
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   598
                /* if EOF, go back */
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   599
                step = step / 2;
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   600
                pivot = pivot - step;
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   601
                continue;
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   602
            }
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   603
            int comparision = word.compareTo(test);
43
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   604
            System.out.println("Binary comparing to " + test +
38
45c0a27c902f Going for v0.3.
viric@llimona
parents: 37
diff changeset
   605
                    ": " + new Integer(comparision).toString());
28
dccb4ae23699 Fixed some bugs in index search.
viric@llimona
parents: 25
diff changeset
   606
            if (comparision <= 0)
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   607
            {
31
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   608
                /* If == 0, then we don't know that it is the
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   609
                 * FIRST match possible in the dictionary.
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   610
                 * There may be more than one entry for the same word, and
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   611
                 * we may not have found still the first. */
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   612
                step = step / 2;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   613
                pivot = pivot - step;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   614
            } else if (comparision > 0)
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   615
            {
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   616
                step = step / 2;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   617
                pivot = pivot + step;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   618
            }
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   619
        } while (step > 0);
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   620
31
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   621
        /* If we found the exact word in a non-last comparision,
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   622
         * it's possible that the final binary search points us
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   623
         * to the word PREVIOUS to the good match. */
43
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   624
        if (!test.startsWith(word))
31
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   625
        {
43
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   626
            System.out.println("The word " + test +
988a367ae8d2 Fixing a bug on the threshold between Binary Search and Prefix Sequence search
viric@llimona
parents: 38
diff changeset
   627
                    " doesn't start with " + word);
31
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   628
            readUntilNewLine();
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   629
        }
b62e9e997038 Fixed a big searching bug.
viric@llimona
parents: 28
diff changeset
   630
        else
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   631
        {
21
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   632
            try {
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   633
                in.seekFromStart(pivot);
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   634
            } catch (IOException e)
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   635
            {
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   636
                System.out.println("Seek from start error");
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   637
                return results;
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   638
            }
35
d5425eaec624 There was still a bug searching. One more fixed.
viric@llimona
parents: 32
diff changeset
   639
            readUntilNewLine();
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   640
        }
21
0739404e26dc Fixed prefix results when the prefix matches a word.
viric@mandarina
parents: 20
diff changeset
   641
20
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   642
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   643
        /* Add the prefixes */
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   644
        SearchNextPrefixes(results, word, 49); /* Max 50 prefixes. Match+nexts*/
2f815ca5cb8c Added prefix search and 'Transliterigo' saving in record.
viric@mandarina
parents: 19
diff changeset
   645
11
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   646
        return results;
6a6a9c1b65cc Added Binary Search.
viric@llimona
parents: 8
diff changeset
   647
    }
0
d6867274bc45 Initial.
viric@llimona
parents:
diff changeset
   648
}