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

Martin Denham mjdenham at gmail.com
Tue Aug 5 14:56:06 MST 2014


Digging around a bit more.  I don't know if the following sparks any more
ideas for anyone.

*Malachi affected too*
The last verse of the OT is missing from the global key list.  So search
results in the last verse of Malachi are also not returned.
The last 2 verses of the NT are missing.  So search results in the last 2
verses of Revelation are also not returned.

*Common works sometimes*
Common is an NT only module.  Doing a search over Common using JSword
directly on my pc exhibits the above problem of 2 verses missing at the end
of Rev.
However, using And Bible on my mobile Common works perfectly and returns
the correct result set!
I have started investigating this and found that on my mobile
getGlobalKeyList still incorrectly stops at Rev 22:19 but
somehow common.find("+amen") returns results which include Rev 22:20-21.

Cheers
Martin



On 20 July 2014 00:10, Chris Burrell <chris at burrell.me.uk> wrote:

> Esv is Nrsv btw
> On 19 Jul 2014 21:18, "Martin Denham" <mjdenham at gmail.com> wrote:
>
>> Interestingly, NT only modules like Common do not have this problem, and
>> nor do the KJVA or NHEBME (NRSV v11n).
>>
>> This problem may possibly only affect modules with KJV v11n.
>>
>>  Martin
>>
>>
>> On 19 July 2014 19:27, DM Smith <dmsmith at crosswire.org> wrote:
>>
>>> getCount(currentTestament) should return the number of keyed entries in
>>> the Testament. Indexing is 0 based.
>>>
>>> So the -1 was right and the bug is in getCount. It is returning 2 less
>>> than it should.
>>>
>>> There are a couple of different ways that getCount can be computed. The
>>> index file contains 1 fixed size entry for each key. Dividing the size of
>>> the index by the size of an entry will give the number of entries in the
>>> file.
>>>
>>> The other way is to compute the number of entries in the v11n.
>>> Basically, each book has a Chapter 0. Each chapter has a verse 0. There
>>> also is a verse 0 for the testament.
>>>
>>> I'd have to look to see how getCount(Testament) is written.
>>>
>>> The problem with changing the -1 to +1 is that it might break for the OT.
>>>
>>> I was happily surprised last night that even more family dropped in for
>>> the weekend. Doubt I'll be able to look at it soon.
>>>
>>> In Him,
>>> DM
>>>
>>> On Jul 19, 2014, at 8:34 AM, Chris Burrell <chris at burrell.me.uk> wrote:
>>>
>>> Fixing to this:   int maxIndex = v11n.getCount(currentTestament) + 1;
>>>
>>>  seems to sort the issue out - however, not sure I understand why. I
>>> could understand v11n.getCount(), but not v11n.getCount()+1. Is there an
>>> issue perhaps in v11n.getCount() as well?
>>>
>>> I'm afraid I don't understand the index (non-lucene) file enough to fix
>>> this properly
>>> Chris
>>>
>>>
>>>
>>> On 19 July 2014 13:17, Chris Burrell <chris at burrell.me.uk> wrote:
>>>
>>>>  @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
>>>>>>
>>>>>>
>>>>>
>>>>
>>> _______________________________________________
>>> jsword-devel mailing list
>>> jsword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>>>
>>>
>>>
>>> _______________________________________________
>>> jsword-devel mailing list
>>> jsword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>>>
>>>
>>
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>>
>>
> _______________________________________________
> 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/20140805/096bfcd3/attachment.html>


More information about the jsword-devel mailing list