merge.h
上传用户:qin5330
上传日期:2007-01-05
资源大小:114k
文件大小:4k
源码类别:

搜索引擎

开发平台:

Perl

  1. /*
  2. ** Copyright (C) 1995, 1996, 1997, 1998 Hewlett-Packard Company
  3. ** Originally by Kevin Hughes, kev@kevcom.com, 3/11/94
  4. **
  5. ** This program and library is free software; you can redistribute it and/or
  6. ** modify it under the terms of the GNU (Library) General Public License
  7. ** as published by the Free Software Foundation; either version 2
  8. ** of the License, or any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU (Library) General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU (Library) General Public License
  16. ** along with this program; if not, write to the Free Software
  17. ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18. **-----------------------------------------------------------
  19. ** Added remapVar and initmapentrylist to fix the merge option -M
  20. ** G. Hill 3/7/97
  21. **
  22. */
  23. struct indexentry {
  24. char *word;
  25. struct resultMerge *result;
  26. };
  27. struct resultMerge{
  28. int filenum;
  29. int rank;
  30. int structure;
  31. int metaName;
  32. struct resultMerge *next;
  33. };
  34. struct indexfileinfo {
  35. int filenum;
  36. char *fileinfo;
  37. char *path;
  38. #ifdef SUPPORT_DOC_PROPERTIES
  39. struct docPropertyEntry* docProperties;
  40. #endif SUPPORT_DOC_PROPERTIES
  41. struct indexfileinfo *next;
  42. };
  43. struct mapentry {
  44. int oldnum;
  45. int newnum;
  46. struct mapentry *next;
  47. };
  48. struct markentry {
  49. int num;
  50. struct markentry *next;
  51. };
  52. struct markentryMerge {
  53. int num;
  54. int metaName;
  55. struct markentryMerge *next;
  56. };
  57. struct metaMergeEntry {
  58. char* metaName;
  59. int oldIndex;
  60. int newIndex;
  61. #ifdef SUPPORT_DOC_PROPERTIES
  62. /* is this meta field a Document Property? */
  63. char isDocProperty; /* true is doc property */
  64. char isOnlyDocProperty; /* true if NOT an indexable meta tag (ie: not in MetaNames) */
  65. #endif
  66. struct metaMergeEntry* next;
  67. };
  68. struct indexfileinfo *indexfilehashlist[BIGHASHSIZE];
  69. struct mapentry *mapentrylist[BIGHASHSIZE];
  70. struct markentry *markentrylist[BIGHASHSIZE];
  71. struct markentryMerge *markentrylistMerge[BIGHASHSIZE];
  72. int remapVar;
  73. /*
  74. ** use _AP() for easier cross-compiler (non-ANSI) porting 
  75. ** <return value> <functionname> _AP( (<arg prototypes>) );
  76. */
  77. void readmerge _AP ((char *file1, char *file2, char *outfile));
  78. int getindexfilenum _AP ((FILE *fp));
  79. void addfilenums _AP ((struct indexentry *ip, int num));
  80. struct indexentry *readindexline _AP ((FILE *fp, long limit, struct metaMergeEntry *metaFile));
  81. void addindexfilelist _AP ((int num, char *info, 
  82.    struct docPropertyEntry *docProperties, int *totalfiles));
  83. char *extractpath _AP ((char *s));
  84. char *lookupindexfilenum _AP ((int num, struct docPropertyEntry** docProperties));
  85. int lookupindexfilepath _AP ((char *path));
  86. struct indexentry *mergeindexentries _AP ((struct indexentry *ip1, struct indexentry *ip2));
  87. void printindexentry _AP ((struct indexentry *ip, FILE *fp));
  88. void remap _AP ((int oldnum, int newnum));
  89. int getmap _AP ((int num));
  90. void marknum _AP ((int num));
  91. void marknumMerge _AP ((int num, int metaName));
  92. int ismarked _AP ((int num));
  93. int ismarkedMerge _AP ((int num, int metaName));
  94. void initmarkentrylist _AP ((void));
  95. void initmarkentrylistMerge _AP ((void));
  96. void initindexfilehashlist _AP ((void));
  97. void freeindexentry _AP ((struct indexentry *ip));
  98. int encodefilenum _AP ((int num));
  99. int decodefilenum _AP ((int num));
  100. void initmapentrylist _AP ((void));
  101. struct resultMerge *addtoresultlistMerge _AP ((struct resultMerge *rp, int filenum,
  102. int rank, int structure, int metaName));
  103. struct metaMergeEntry* readMergeMeta _AP ((struct metaMergeEntry* metaFile, FILE* fp));
  104. struct metaMergeEntry* addMetaMerge _AP ((struct metaMergeEntry* metaFile, char* metaWord, int isDocProp, int isOnlyDocProp, int* counter));
  105. struct metaEntry* createMetaMerge _AP ((struct metaMergeEntry* metaFile1, struct metaMergeEntry* metaFile2));
  106. struct metaEntry* addMetaMergeList _AP ((struct metaEntry* metaEntryList, struct metaMergeEntry* metaFileEntry, int* count));