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 getMetaName & isMetaName |
20 |
** to support METADATA |
21 |
** G. Hill 3/18/97 ghill@library.berkeley.edu |
22 |
*/ |
23 |
|
24 |
|
25 |
#ifndef __HasSeenModule_Search |
26 |
#define __HasSeenModule_Search 1 |
27 |
|
28 |
#ifdef __cplusplus |
29 |
extern "C" { |
30 |
#endif |
31 |
|
32 |
/* |
33 |
-- module data |
34 |
*/ |
35 |
|
36 |
struct MOD_Search |
37 |
{ |
38 |
/* start of hits */ |
39 |
int beginhits; |
40 |
/* max. number of hits */ |
41 |
int maxhits; |
42 |
|
43 |
/* Properties vars */ |
44 |
int numPropertiesToDisplay; |
45 |
int currentMaxPropertiesToDisplay; |
46 |
char **propNameToDisplay; |
47 |
|
48 |
|
49 |
/* All Results per index file */ |
50 |
struct DB_RESULTS *db_results; |
51 |
|
52 |
/* Hash array for merging results */ |
53 |
RESULT *resulthashlist[BIGHASHSIZE]; |
54 |
|
55 |
int bigrank; |
56 |
|
57 |
/* Phrase delimiter char */ |
58 |
int PhraseDelimiter; |
59 |
|
60 |
/* Number of stopwords removed from query */ |
61 |
int removed_stopwords; |
62 |
|
63 |
MEM_ZONE *resultSearchZone; |
64 |
}; |
65 |
|
66 |
void initModule_Search (SWISH *); |
67 |
void freeModule_Search (SWISH *); |
68 |
void resetModule_Search (SWISH *); |
69 |
int configModule_Search (SWISH *, StringList *); |
70 |
|
71 |
|
72 |
int search (SWISH *sw, char *str, int structure); |
73 |
int search_2 (SWISH *sw, char *words, int structure); |
74 |
RESULT *SwishNext(SWISH *); |
75 |
|
76 |
struct swline *fixmetanames(struct swline *); |
77 |
struct swline *fixnot1(struct swline *); |
78 |
struct swline *fixnot2(struct swline *); |
79 |
struct swline *expandphrase(struct swline *, char); |
80 |
|
81 |
void printheaderbuzzwords(SWISH *sw, IndexFILE * indexf); |
82 |
|
83 |
RESULT_LIST *parseterm(SWISH *, int, int, int, IndexFILE *, struct swline **); |
84 |
RESULT_LIST *operate(SWISH *, RESULT_LIST *, int, char *, void *, int, int, int, IndexFILE *); |
85 |
RESULT_LIST *getfileinfo(SWISH *, char *, IndexFILE *, int, int); |
86 |
|
87 |
int isrule(char *); |
88 |
int isnotrule(char *); |
89 |
int isbooleanrule(char *); |
90 |
int isunaryrule(char *); |
91 |
int isMetaNameOpNext(struct swline *); |
92 |
int getrulenum(char *); |
93 |
int u_isnotrule(SWISH *sw, char *word); |
94 |
int u_isrule(SWISH *sw, char *word); |
95 |
int u_SelectDefaultRulenum(SWISH *sw, char *word); |
96 |
|
97 |
|
98 |
RESULT_LIST *andresultlists(SWISH *, RESULT_LIST *, RESULT_LIST *, int); |
99 |
RESULT_LIST *orresultlists(SWISH *, RESULT_LIST *, RESULT_LIST *); |
100 |
RESULT_LIST *notresultlist(SWISH *, RESULT_LIST *, IndexFILE *); |
101 |
RESULT_LIST *notresultlists(SWISH *, RESULT_LIST *, RESULT_LIST *); |
102 |
RESULT_LIST *phraseresultlists(SWISH *, RESULT_LIST *, RESULT_LIST *, int); |
103 |
void addtoresultlist(RESULT_LIST *, int, int, int, int, IndexFILE *,SWISH *); |
104 |
|
105 |
|
106 |
RESULT_LIST *sortresultsbyfilenum(RESULT_LIST *); |
107 |
|
108 |
void getrawindexline(FILE *); |
109 |
int wasStemmingAppliedToIndex(FILE *); |
110 |
int wasSoundexAppliedToIndex(FILE *); |
111 |
|
112 |
void freeresultlist(SWISH *sw,struct DB_RESULTS *); |
113 |
void freeresult(SWISH *,RESULT *); |
114 |
struct swline *ignore_words_in_query(SWISH *,IndexFILE *, struct swline *,unsigned char); |
115 |
struct swline *stem_words_in_query(SWISH *,IndexFILE *, struct swline *); |
116 |
struct swline *soundex_words_in_query(SWISH *,IndexFILE *, struct swline *); |
117 |
struct swline *translatechars_words_in_query(SWISH *sw,IndexFILE *indexf,struct swline *searchwordlist); |
118 |
struct swline *parse_search_string(SWISH *sw, char *words,INDEXDATAHEADER header); |
119 |
|
120 |
RESULT_LIST *mergeresulthashlist (SWISH *sw, RESULT_LIST *r); |
121 |
|
122 |
#ifdef __cplusplus |
123 |
} |
124 |
#endif /* __cplusplus */ |
125 |
|
126 |
#endif /* __HasSeenModule_Search */ |
127 |
|