[jsword-devel] Cannot search last 2 verses of Revelation

Chris Burrell chris at burrell.me.uk
Sat Jul 19 05:17:04 MST 2014


 @Test
    public void testMe() {

assertTrue(Books.installed().getBook("ESV").getGlobalKeyList().contains(new
Verse(Versifications.instance().getVersification("NRSV"), BibleBook.REV,
22, 21)));

    }


On 19 July 2014 13:16, Chris Burrell <chris at burrell.me.uk> wrote:

> The issue with this method here. Lucene relies on getGlobalKeyList, but
> that doesn't return the right number of keys. It seems to chop off the end
>
> @Override
>     public Key getGlobalKeyList() throws BookException {
>         ZVerseBackendState rafBook = null;
>         try {
>             rafBook = initState();
>
>             String v11nName =
> getBookMetaData().getProperty(ConfigEntryType.VERSIFICATION).toString();
>             Versification v11n =
> Versifications.instance().getVersification(v11nName);
>
>             Testament[] testaments = new Testament[] {
>                     Testament.OLD, Testament.NEW
>             };
>
>             BitwisePassage passage = new RocketPassage(v11n);
>             passage.raiseEventSuppresion();
>             passage.raiseNormalizeProtection();
>
>             for (Testament currentTestament : testaments) {
>                 RandomAccessFile idxRaf =
> rafBook.getIdxRaf(currentTestament);
>
>                 // If Bible does not contain the desired testament, then
> false
>                 if (idxRaf == null) {
>                     // no keys in this testament
>                     continue;
>                 }
>
>                 int maxIndex = v11n.getCount(currentTestament) - 1;
>
>                 // Read in the whole index, a few hundred Kb at most.
>                 byte[] temp = SwordUtil.readRAF(idxRaf, 0, IDX_ENTRY_SIZE
> * maxIndex);
>
>                 // For each entry of 10 bytes, the length of the verse in
> bytes
>                 // is in the last 2 bytes. If both bytes are 0, then there
> is no content.
>                 for (int ii = 0; ii < temp.length; ii += IDX_ENTRY_SIZE) {
>                     // This can be simplified to temp[ii + 8] == 0 &&
> temp[ii + 9] == 0.
>                     // int verseSize =
> SwordUtil.decodeLittleEndian16(temp, ii + 8);
>                     // if (verseSize > 0) {
>                     if (temp[ii + 8] != 0 || temp[ii + 9] != 0) {
>                         int ordinal = ii / IDX_ENTRY_SIZE;
>
> passage.addVersifiedOrdinal(v11n.getOrdinal(currentTestament, ordinal));
>                     }
>                 }
>             }
>
>             passage.lowerNormalizeProtection();
>             passage.lowerEventSuppressionAndTest();
>
>             return passage;
>         } catch (IOException e) {
>             throw new BookException(JSMsg.gettext("Unable to read key list
> from book."));
>         } finally {
>             OpenFileStateManager.release(rafBook);
>         }
>     }
>
> Chris
>
>
>
> On 19 July 2014 11:15, Martin Denham <mjdenham at gmail.com> wrote:
>
>> For clarification, this is different to the search problem I mentioned
>> yesterday.
>>
>> I won't be able to look at this for at least a few days, and I am not so
>> knowledgeable regarding Lucene, so if anybody else fixes it in the mean
>> time - great.
>>
>> Martin
>>
>>
>> On 19 July 2014 09:24, Martin Denham <mjdenham at gmail.com> wrote:
>>
>>> This bug affects both STEP and And Bible so it probably affects most
>>> JSword apps.
>>>
>>> No search results are returned for the last 2 verses of Revelation.
>>>
>>> *Examples*
>>> If you search for 'Amen'
>>> <http://www.stepbible.org/?q=version=ESV%7Ctext=Amen&options=VNHUG&pos=1>
>>> you see many results but the last is in Rev 19, not Rev 22 and the last 2
>>> verses of Revelation contain Amen.
>>>
>>> Searching for 'Jesus' in Rev 22
>>> <http://www.stepbible.org/?q=version=ESV%7Creference=Rev.22%7Ctext=Jesus&options=VNHUG&pos=1>
>>> yields only verse which is verse 16 and omits verses 21 and 22.
>>>
>>> Martin
>>>
>>
>>
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/jsword-devel/attachments/20140719/17d2deda/attachment.html>


More information about the jsword-devel mailing list