You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
88 lines
2.2 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1991 - 1992.
|
|
//
|
|
// File: PROXCUR.HXX
|
|
//
|
|
// Contents: Proximity cursor
|
|
//
|
|
// Classes: CProxCursor
|
|
//
|
|
// History: 14-Apr-92 AmyA Created.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#ifdef DISPLAY_INCLUDES
|
|
#pragma message( "#include <" __FILE__ ">..." )
|
|
#endif
|
|
|
|
#include <cursor.hxx>
|
|
#include <curheap.hxx>
|
|
|
|
class COccCurStack;
|
|
|
|
#define PROX_MAX 50
|
|
|
|
extern unsigned ProxDefault[];
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Class: CProxCursor
|
|
//
|
|
// Purpose: Boolean And cursor (find documents that contain all of
|
|
// the specified keys). Works with a single index. Differs from
|
|
// CAndCursor because occurrence information is kept so that
|
|
// proximity of items can be determined.
|
|
//
|
|
// History: 14-Apr-92 AmyA Created.
|
|
// 28-Jun-94 SitaramR Added _logWidMax.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
class CProxCursor: public CCursor
|
|
{
|
|
public:
|
|
|
|
CProxCursor ( unsigned cCursor,
|
|
COccCurStack& curStack,
|
|
LONG maxDist = MAX_QUERY_RANK );
|
|
|
|
~CProxCursor() {} // default destructors take care of all the data
|
|
// structures...
|
|
|
|
WORKID WorkId();
|
|
|
|
WORKID NextWorkId();
|
|
|
|
ULONG HitCount();
|
|
|
|
LONG Rank();
|
|
|
|
LONG Hit();
|
|
LONG NextHit();
|
|
void RatioFinished ( ULONG& denom, ULONG& num );
|
|
|
|
private:
|
|
|
|
void FindConjunction();
|
|
|
|
LONG CalculateRank();
|
|
|
|
WORKID _wid;
|
|
|
|
COccHeapOfOccCur _occHeap;
|
|
|
|
unsigned _cCur;
|
|
|
|
LONG _maxDist;
|
|
|
|
LONG _rank; // keeps track of rank so that it will be
|
|
// accurate even if HitCount is called first.
|
|
|
|
ULONG _logWidMax;
|
|
|
|
};
|
|
|