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.
136 lines
2.7 KiB
136 lines
2.7 KiB
//
|
|
// document.cc
|
|
//
|
|
// document: Query the document database
|
|
//
|
|
// Part of the ht://Dig package <http://www.htdig.org/>
|
|
// Copyright (c) 1995-2004 The ht://Dig Group
|
|
// For copyright details, see the file COPYING in your distribution
|
|
// or the GNU Library General Public License (LGPL) version 2 or later
|
|
// <http://www.gnu.org/copyleft/lgpl.html>
|
|
//
|
|
// $Id: document.cc,v 1.5 2004/05/28 13:15:29 lha Exp $
|
|
//
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "htconfig.h"
|
|
#endif /* HAVE_CONFIG_H */
|
|
|
|
#include <unistd.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
#ifdef HAVE_STD
|
|
#include <iostream>
|
|
#ifdef HAVE_NAMESPACES
|
|
using namespace std;
|
|
#endif
|
|
#else
|
|
#include <iostream.h>
|
|
#endif /* HAVE_STD */
|
|
|
|
// If we have this, we probably want it.
|
|
#ifdef HAVE_GETOPT_H
|
|
#include <getopt.h>
|
|
#endif
|
|
|
|
#include "defaults.h"
|
|
#include "DocumentDB.h"
|
|
|
|
typedef struct {
|
|
char* config;
|
|
int urls;
|
|
int docids;
|
|
} params_t;
|
|
|
|
static void usage();
|
|
static void dodoc(params_t* params);
|
|
|
|
static int verbose = 0;
|
|
|
|
//*****************************************************************************
|
|
// int main(int ac, char **av)
|
|
//
|
|
int main(int ac, char **av)
|
|
{
|
|
int c;
|
|
extern char *optarg;
|
|
params_t params;
|
|
|
|
params.config = strdup("???");
|
|
params.urls = 0;
|
|
params.docids = 0;
|
|
|
|
while ((c = getopt(ac, av, "vudc:")) != -1)
|
|
{
|
|
switch (c)
|
|
{
|
|
case 'v':
|
|
verbose++;
|
|
break;
|
|
case 'u':
|
|
params.urls = 1;
|
|
break;
|
|
case 'd':
|
|
params.docids = 1;
|
|
break;
|
|
case 'c':
|
|
free(params.config);
|
|
params.config = strdup(optarg);
|
|
break;
|
|
case '?':
|
|
usage();
|
|
break;
|
|
}
|
|
}
|
|
|
|
dodoc(¶ms);
|
|
|
|
free(params.config);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static void dodoc(params_t* params)
|
|
{
|
|
HtConfiguration* const config= HtConfiguration::config();
|
|
config->Defaults(&defaults[0]);
|
|
config->Read(params->config);
|
|
|
|
DocumentDB docs;
|
|
if(docs.Read(config->Find("doc_db"), config->Find("doc_index"), config->Find("doc_excerpt")) < 0) {
|
|
cerr << "dodoc: cannot open\n";
|
|
exit(1);
|
|
}
|
|
|
|
List* docids = docs.DocIDs();
|
|
IntObject* docid = 0;
|
|
for(docids->Start_Get(); (docid = (IntObject*)docids->Get_Next()); ) {
|
|
if(params->docids) cout << docid->Value();
|
|
if(params->urls) {
|
|
if(params->docids) cout << " ";
|
|
DocumentRef* docref = docs[docid->Value()];
|
|
cout << docref->DocURL();
|
|
cout << "\n";
|
|
delete docref;
|
|
}
|
|
}
|
|
delete docids;
|
|
}
|
|
|
|
//*****************************************************************************
|
|
// void usage()
|
|
// Display program usage information
|
|
//
|
|
static void usage()
|
|
{
|
|
cout << "usage: word [options]\n";
|
|
cout << "Options:\n";
|
|
cout << "\t-v\t\tIncreases the verbosity\n";
|
|
cout << "\t-u\t\tShow URLs\n";
|
|
cout << "\t-dl\t\tShow DocIDs\n";
|
|
cout << "\t-c file\tspecify the config file to load\n";
|
|
exit(0);
|
|
}
|
|
|