Re: Weighting Schemes: Implementing Piv+ Normalization

James Aylett <[email protected]>
Newsgroups gmane.comp.search.xapian.devel
Message-ID <[email protected]>
On Fri, Jul 29, 2016 at 12:35:57AM +0530, Vivek Pal wrote:

> > I can't tell for sure without seeing the diff. You may mean just
> > `ptr++`? But it could be something else, depending on what you're
> > trying to do.
> 
> I'm trying to unserialise normalization strings (e.g. "nfn", "nbsl"  etc.)
> along with the new double parameters (s and delta) but
> it isn't turning out to be smooth because there's no method for
> unserialising strings in serialise-double.h

Serialising it about round-tripping numbers through strings. You
shouldn't need to serialise a string; you don't even have to worry
about encoding with those strings, since they're all covered by ASCII
anyway.

> Although, doing just
> 
> const string normals = ptr++; or, const string normals = static_cast<const
> string>ptr++; fixes compile errors.

`ptr` is, if I inferred correctly, a `const char *`. (I'm not sure,
because I don't know why you're incrementing it. Please push your code
to github if you need further help so people can see the entire
context of your changes.)

const string normals = "something";

will work because there's a suitable constructor. `static_cast<>`
isn't appropriate here (again, providing I've inferred the type of
`ptr` correctly).

> But tfidfweight3 test case is failing with remote backends :-
> 
> $ ./runtest gdb ./apitest -v tfidfweight3
> 
> Running test: tfidfweight3... SerialisationError: REMOTE:Bad encoded
> double: short mantissa (context: remote:prog(../bin/xapian-progsrv -t300000
> .glass/db=apitest_simpledata)

You're deserialising something that wasn't serialised, or wasn't
serialised properly.

If I put 'xapian bad encoded double short mantissa' into Google, I get
this page as the top result (it may be further down the page for you):

https://xapian.org/docs/sourcedoc/html/serialise-double_8cc_source.html

The error message is at line 173 of unserialise_double. I don't need
to read the code to understand what the error is telling me, because
mantissa is a common term when dealing with floating point numbers
(again, Google is directly fairly helpful here).

> I'm wondering if I need to introduce a new method in serialise-double.h for
> string parameters (normalizations in this case)? To be honest, I have
> little idea about that part of Xapian so probably a workaround might be
> better. :)

Again: no. And generally, applying a workaround because you don't
understand something isn't a good idea, because how will you know if
the workaround isn't working around some important issues you need to
address directly?

J

-- 
  James Aylett, occasional trouble-maker
  xapian.org
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.