My favorites | Sign in
Project Logo
             
New issue | Search
for
| Advanced search | Search tips
Issue 11: Multi-dbaddr is broken in 4.52 onwards
2 people starred this issue and may be notified of changes. Back to list
Status:  Fixed
Owner:  dp.maxime
Closed:  Jun 17
Type-Defect
Priority-Medium


Sign in to add a comment
 
Reported by amitsharadjoshi, May 14, 2009
Setup dpsearch with multiple indices each with its own searchd daemon.
Setup the search.htm to search across all the searchd daemons
If there are duplicate articles between the indices you will sometimes get
results with no document information depending on the order of the searchd
daemons specified in the search.htm. 

The problem lies around line 348 in the file src/searchd.c #ifdef 
DpsDocFromTextBuf(&Res->Doc[ndocs], tok);
WITH_MULTIDBADDR
                                        {
                                          char *dbstr =
DpsVarListFindStr(&Res->Doc[ndocs].Sections, "dbnum", NULL);
                                          if (dbstr != NULL) {
                                            Res->Doc[ndocs].dbnum =
DPS_ATOI(dbstr);
                                          }
                                        }
#endif

Assigning Res->Doc[ndocs].dbnum causes the db number to be set incorrectly
and the document is looked for in the wrong index. Previous versions did
not have that code and also the assignment
DpsDocFromTextBuf(&Res->Doc[ndocs], tok); was after the #endif.

Commenting out the whole if(dbstr) ... clause and moving the assignment to
the old position seems to fix the problems.
                                        

Comment 1 by dp.maxime, May 17, 2009
A quick-fix has been commited to SVN, please check it.
http://dataparksearch.googlecode.com/svn-history/r174/trunk/src/searchd.c
Status: Started
Owner: dp.maxime
Comment 2 by dp.maxime, Jun 17, 2009
(No comment was entered for this change.)
Status: Fixed
Sign in to add a comment

Hosted by Google Code