Added checked index access
This commit is contained in:
parent
37b2983737
commit
340a82ed32
3 changed files with 32 additions and 10 deletions
|
@ -2,9 +2,9 @@
|
||||||
*
|
*
|
||||||
* $RCSfile: BtreeDict.cxx,v $
|
* $RCSfile: BtreeDict.cxx,v $
|
||||||
*
|
*
|
||||||
* $Revision: 1.8 $
|
* $Revision: 1.9 $
|
||||||
*
|
*
|
||||||
* last change: $Author: abi $ $Date: 2001-07-05 18:50:40 $
|
* last change: $Author: abi $ $Date: 2001-07-06 11:04:05 $
|
||||||
*
|
*
|
||||||
* The Contents of this file are made available subject to the terms of
|
* The Contents of this file are made available subject to the terms of
|
||||||
* either of the following licenses
|
* either of the following licenses
|
||||||
|
@ -357,7 +357,8 @@ void BlockProcessorImpl::process( Block* block ) const
|
||||||
|
|
||||||
|
|
||||||
BtreeDict::BtreeDict( const util::IndexAccessor& indexAccessor ) throw( IOException )
|
BtreeDict::BtreeDict( const util::IndexAccessor& indexAccessor ) throw( IOException )
|
||||||
: blocks_( 0 ),
|
: blocksL_( 0 ),
|
||||||
|
blocks_( 0 ),
|
||||||
blockManager_( new DBEnvImpl( indexAccessor ) ) // may throw IOExcption
|
blockManager_( new DBEnvImpl( indexAccessor ) ) // may throw IOExcption
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -379,7 +380,7 @@ BtreeDict::BtreeDict( const util::IndexAccessor& indexAccessor ) throw( IOExcept
|
||||||
|
|
||||||
idx = 4 + aStr.lastIndexOf( "id1=" );
|
idx = 4 + aStr.lastIndexOf( "id1=" );
|
||||||
sal_Int32 count = atoi( bff + idx );
|
sal_Int32 count = atoi( bff + idx );
|
||||||
blocks_ = new sal_Int32[ count ];
|
blocks_ = new sal_Int32[ blocksL_ = count ];
|
||||||
|
|
||||||
delete[] bff;
|
delete[] bff;
|
||||||
BlockProcessorImpl blProc( this );
|
BlockProcessorImpl blProc( this );
|
||||||
|
@ -456,6 +457,9 @@ sal_Int32 BtreeDict::fetch( const rtl::OUString& key ) const throw( excep::XmlSe
|
||||||
|
|
||||||
rtl::OUString BtreeDict::fetch( sal_Int32 conceptID ) const throw( excep::XmlSearchException )
|
rtl::OUString BtreeDict::fetch( sal_Int32 conceptID ) const throw( excep::XmlSearchException )
|
||||||
{
|
{
|
||||||
|
if( blocksL_ <= conceptID )
|
||||||
|
throw excep::XmlSearchException( rtl::OUString() );
|
||||||
|
|
||||||
return findID( blocks_[conceptID], conceptID );
|
return findID( blocks_[conceptID], conceptID );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
*
|
*
|
||||||
* $RCSfile: Query.cxx,v $
|
* $RCSfile: Query.cxx,v $
|
||||||
*
|
*
|
||||||
* $Revision: 1.4 $
|
* $Revision: 1.5 $
|
||||||
*
|
*
|
||||||
* last change: $Author: abi $ $Date: 2001-07-05 18:50:40 $
|
* last change: $Author: abi $ $Date: 2001-07-06 11:04:07 $
|
||||||
*
|
*
|
||||||
* The Contents of this file are made available subject to the terms of
|
* The Contents of this file are made available subject to the terms of
|
||||||
* either of the following licenses
|
* either of the following licenses
|
||||||
|
@ -78,6 +78,13 @@
|
||||||
using namespace xmlsearch::qe;
|
using namespace xmlsearch::qe;
|
||||||
|
|
||||||
|
|
||||||
|
sal_Int32* QueryHit::getMatches( sal_Int32& matchesL )
|
||||||
|
{
|
||||||
|
matchesL = matchesL_;
|
||||||
|
return matches_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* HitStore */
|
/* HitStore */
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
*
|
*
|
||||||
* $RCSfile: XmlIndex.cxx,v $
|
* $RCSfile: XmlIndex.cxx,v $
|
||||||
*
|
*
|
||||||
* $Revision: 1.7 $
|
* $Revision: 1.8 $
|
||||||
*
|
*
|
||||||
* last change: $Author: abi $ $Date: 2001-07-06 10:03:26 $
|
* last change: $Author: abi $ $Date: 2001-07-06 11:04:07 $
|
||||||
*
|
*
|
||||||
* The Contents of this file are made available subject to the terms of
|
* The Contents of this file are made available subject to the terms of
|
||||||
* either of the following licenses
|
* either of the following licenses
|
||||||
|
@ -427,9 +427,20 @@ QueryHitData* XmlIndex::hitToData( QueryHit* hit )
|
||||||
for( sal_Int32 i = 0; i < termsL; ++i )
|
for( sal_Int32 i = 0; i < termsL; ++i )
|
||||||
{
|
{
|
||||||
sal_Int32 aInt = ( i << 1 );
|
sal_Int32 aInt = ( i << 1 );
|
||||||
if( matches[ aInt ] > 0 )
|
if( 0 <= aInt && aInt < matchesL )
|
||||||
terms[i] = fetch( matches[ aInt ] );
|
{
|
||||||
|
sal_Int32 match = matches[ aInt ];
|
||||||
|
if( match > 0 )
|
||||||
|
try
|
||||||
|
{
|
||||||
|
terms[i] = fetch( match );
|
||||||
|
}
|
||||||
|
catch( const excep::XmlSearchException& e )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sal_Int32 document = hit->getDocument();
|
sal_Int32 document = hit->getDocument();
|
||||||
QueryHitData *res = new QueryHitData( hit->getPenalty(),
|
QueryHitData *res = new QueryHitData( hit->getPenalty(),
|
||||||
documentName( document ),
|
documentName( document ),
|
||||||
|
|
Loading…
Reference in a new issue