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