[sword-devel] Searching for entity attributes
David "Judah's Shadow" Blue
yudahsshadow at gmx.com
Tue Jun 18 11:45:40 EDT 2024
On Sunday, June 16, 2024 6:46:31 PM EDT Fred wrote:
> can you do a regular-expression search? which would be:
>
> G11[^0123456789]
>
> i.e., G followed by 1, followed by 1, followed by not-a-digit.
>
> On Sun, Jun 16, 2024 at 3:27 AM Tobias Klein <contact at tklein.info> wrote:
> > On 5/14/24 5:20 PM, David "Judah's Shadow" Blue wrote:
> >
> >
> > I'm sure I could add some logic to check the given module and adapt the
> > token to fit, but that doesn't help the other issue I've found. When
> > searching for, say, G11 in a module that isn't 0 padded, all occurrences
> > of G11 are found, but so are all occurrences of G110, G1105, etc.
> > Assuming that normalization of padding on the entity attributes adds
> > padding to them so it's in the form of G0XXXX, that should cut down on
> > the false matches significantly.
> >
> > In node-sword-interface I added some logic for this, so that the user does
> > not have to consider that.
> >
> >
> > https://github.com/ezra-bible-app/node-sword-interface/blob/794c349bece231
> > e2aa58bdacb7fe4aaffe774bcf/src/sword_backend/module_search.cpp#L146>
> > // If the Strong's key is OT we need to insert a zero in front
> >
> > of the key
> >
> > // This is necessary because the Sword modules with Strong's
> >
> > have a zero in front of the Hebrew Strong's numbers
> >
> > if (searchTerm[0] == 'H' &&
> >
> > this->_textProcessor.moduleHasStrongsZeroPrefixes(module)) {
> >
> > // Cut out the number from the Strong's key (starting at
> >
> > index 1 until end of string)
> >
> > string strongsKey = searchTerm.substr(1,
> >
> > searchTerm.size());
> >
> > // Overwrite the searchTerm with an inserted 0
> > searchTerm = "H0" + strongsKey;
> >
> > }
I just checked in diatheke and it looks like this will fail for the NASB, for
instance, because the NASB doesn't have leading 0s in either Testament.
And the bigger issue in my interface, when you retrieve a Strong's number from
the lexicon by searching for a term (i.e. Alpha), it passes through the
strongsPadding logic and gets leading 0's added. Until strongsPadding is added
to the entity attribute search in the SWORD engine, I may fall back to
stripping 0's out of the users input if the first search comes up empty. But
that still won't solve the issue of searching for G matching G11, and so on.
For that, I feel, the solution is to do use the strongsPadding logic on the
entity attributes since that seems to add leading 0's.
More information about the sword-devel
mailing list