<style>
/* Changing the layout to use less space for mobiles */
@media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) {
#email-body { min-width: 30em !important; }
#email-page { padding: 8px !important; }
#email-banner { padding: 8px 8px 0 8px !important; }
#email-avatar { margin: 1px 8px 8px 0 !important; padding: 0 !important; }
#email-fields { padding: 0 8px 8px 8px !important; }
#email-gutter { width: 0 !important; }
}
</style>
<div id="email-body">
<table id="email-wrap" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#f0f0f0;color:#000000;width:100%;">
<tr valign="top">
<td id="email-page" style="padding:16px !important;">
<table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #bbbbbb;color:#000000;width:100%;">
<tr valign="top">
<td bgcolor="#4d5c47" style="background-color:#4d5c47;color:#ffffcc;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;line-height:1;"><img src="http://www.crosswire.org/bugs/s/en_US-l73y3/783/14/_/jira-logo-scaled.png" alt="" style="vertical-align:top;" /></td>
</tr><tr valign="top">
<td id="email-banner" style="padding:32px 32px 0 32px;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="width:100%;">
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;padding:0;">
<img id="email-avatar" src="http://www.crosswire.org/bugs/secure/useravatar?avatarId=10062" alt="" height="48" width="48" border="0" align="left" style="padding:0;margin: 0 16px 16px 0;" />
<div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;">
<a class="user-hover" rel="dmsmith" id="email_dmsmith" href="http://www.crosswire.org/bugs/secure/ViewProfile.jspa?name=dmsmith" style="color:#000000;">DM Smith</a>
commented on <img src="http://www.crosswire.org/bugs/images/icons/improvement.gif" height="16" width="16" border="0" align="absmiddle" alt="Improvement"> <a style='color:#000000;text-decoration:none;' href='http://www.crosswire.org/bugs/browse/JS-264'>JS-264</a>
</div>
<div id="email-summary" style="font-size:16px;line-height:20px;padding:2px 0 16px 0;">
<a style='color:#000000;text-decoration:none;' href='http://www.crosswire.org/bugs/browse/JS-264'><strong>Create indexer for low memory devices</strong></a>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<td id="email-fields" style="padding:0 32px 32px 32px;">
<table border="0" cellpadding="0" cellspacing="0" style="padding:0;text-align:left;width:100%;" width="100%">
<tr valign="top">
<td id="email-gutter" style="width:64px;white-space:nowrap;"></td>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td colspan="2" style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 16px 0;width:100%;">
<div class="comment-block" style="background-color:#edf5ff;border:1px solid #dddddd;color:#000000;padding:12px;"><p>Many thanks. I'll get this (or something like it) in for the upcoming release.</p>
<p>Regarding, the points:<br/>
1) Yes, it should trap and handle errors properly.<br/>
2) I'll play with it. My previous experience was that it created way too many verses for a complete Bible (around 100,000). Hopefully your solution will minimize the number of files.<br/>
3) The generation of the global key list has been optimized for all Bibles and verse based commentaries. I think getting it from the Book be about as fast as getting it from PassageKeyFactory. You'll want to keep an eye out for increased memory usage. There are some things we can do to improve it if needed.<br/>
4) Yes the finally block is critical for cleanup.<br/>
5) I think there is a short term solution and a long term solution.</p>
<p>The short term solution, to allow you to select which fields to include in the index, does not address the real problem.</p>
<p>The real problem is that it parses the verse once per field. It'd be better to have a single pass tokenizer that breaks the verse into parts. An iterator would get the next token and this would be put into the correct field.</p>
<p>6) I've improved the progress reporting. The big problem was that every time it reported progress the underlying listener list was cloned. The other problem was that the whole mechanism was over synchronized. Both of these are fixed. That said, the time that indexing on a desktop takes is much less time than before, so reporting once per verse is dumb. How about we report once per chapter rather than every 50 verses. That's a bit more often than 50.</p>
<p>7) Can garbage collection be moved outside of indexing? There should be some way to do this at regular intervals, but I'm not sure I like having explicit calls in the loop.</p></div>
<div style="color:#505050;padding:4px 0 0 0;"> </div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td><!-- End #email-page -->
</tr>
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:10px;line-height:14px;padding: 0 16px 16px 16px;text-align:center;">
This message is automatically generated by JIRA.<br />
If you think it was sent incorrectly, please contact your JIRA administrators<br />
For more information on JIRA, see: <a style='color:#000000;' href='http://www.atlassian.com/software/jira'>http://www.atlassian.com/software/jira</a>
</td>
</tr>
</table><!-- End #email-wrap -->
</div><!-- End #email-body -->