1 |
|
/* ============================================================================ |
2 |
|
* Douglas Thrift's Search Engine License |
3 |
|
* |
4 |
< |
* Copyright (C) 2002-2004, Douglas Thrift. All Rights Reserved. |
4 |
> |
* Copyright (C) 2002-2004, 2008, Douglas Thrift. All Rights Reserved. |
5 |
|
* Redistribution and use in source and binary forms, with or without |
6 |
|
* modification, are permitted provided that the following conditions are met: |
7 |
|
* |
57 |
|
class Ranker : public Page |
58 |
|
{ |
59 |
|
private: |
60 |
+ |
typedef map<size_t, size_t> Map; |
61 |
|
enum state { all, title, url, text }; |
62 |
+ |
enum { sampleMax = 160 }; |
63 |
|
string sample; |
64 |
< |
map<unsigned, unsigned> occurrencesTitle; |
65 |
< |
map<unsigned, unsigned> occurrencesDescription; |
66 |
< |
map<unsigned, unsigned> occurrencesText; |
67 |
< |
unsigned value; |
64 |
> |
Map occurrencesTitle; |
65 |
> |
Map occurrencesDescription; |
66 |
> |
Map occurrencesText; |
67 |
> |
size_t value; |
68 |
|
vector<string> required; |
69 |
|
vector<string> excluded; |
70 |
|
vector<string> eitherOr; |
71 |
< |
unsigned requiredValue; |
72 |
< |
unsigned excludedValue; |
73 |
< |
unsigned eitherOrValue; |
71 |
> |
size_t requiredValue; |
72 |
> |
size_t excludedValue; |
73 |
> |
size_t eitherOrValue; |
74 |
|
string site; |
75 |
|
state allIn; |
76 |
|
string lowerURL; |
81 |
|
void checkRequired(); |
82 |
|
void checkExcluded(); |
83 |
|
void checkEitherOr(); |
84 |
< |
unsigned find(string word, const string& where); |
85 |
< |
unsigned find(string word, const string& where, map<unsigned, unsigned>& |
86 |
< |
occurrences); |
87 |
< |
unsigned phrase(const string& phrase, const string& where); |
88 |
< |
unsigned phrase(const string& phrase, const string& where, map<unsigned, |
89 |
< |
unsigned>& occurrences); |
90 |
< |
unsigned phrase(const vector<string>& words, unsigned word, unsigned& |
91 |
< |
begin, bool start, const string& where); |
92 |
< |
unsigned phrase(const vector<string>& words, unsigned word, unsigned& |
93 |
< |
begin, bool start, const string& where, map<unsigned, unsigned>& |
92 |
< |
occurrences); |
93 |
< |
unsigned evaluate(vector<unsigned>& ins); |
84 |
> |
size_t find(string word, const string& where); |
85 |
> |
size_t find(string word, const string& where, Map& occurrences); |
86 |
> |
size_t phrase(const string& phrase, const string& where); |
87 |
> |
size_t phrase(const string& phrase, const string& where, |
88 |
> |
Map& occurrences); |
89 |
> |
size_t phrase(const vector<string>& words, size_t word, |
90 |
> |
size_t& begin, bool start, const string& where); |
91 |
> |
size_t phrase(const vector<string>& words, size_t word, |
92 |
> |
size_t& begin, bool start, const string& where, Map& occurrences); |
93 |
> |
size_t evaluate(vector<size_t>& ins); |
94 |
|
void decrap(string& crap); |
95 |
|
public: |
96 |
< |
Ranker(Page& page); |
96 |
> |
Ranker(Page& page) : Page(page), value(0), requiredValue(0), |
97 |
> |
excludedValue(0), eitherOrValue(0), allIn(all) {} |
98 |
|
~Ranker() {} |
99 |
|
void rank(vector<string> query); |
100 |
|
void setSample(); |
101 |
|
string getTitle(); |
102 |
|
string getDescription(); |
103 |
|
string& getSample() { return sample; } |
104 |
< |
bool operator==(const unsigned number) const; |
104 |
> |
bool operator==(const size_t number) const; |
105 |
|
bool operator==(const Ranker& ranker) const; |
106 |
< |
bool operator!=(const unsigned number) const; |
106 |
> |
bool operator!=(const size_t number) const; |
107 |
|
bool operator!=(const Ranker& ranker) const; |
108 |
< |
bool operator<(const unsigned number) const; |
108 |
> |
bool operator<(const size_t number) const; |
109 |
|
bool operator<(const Ranker& ranker) const; |
110 |
< |
bool operator>(const unsigned number) const; |
110 |
> |
bool operator>(const size_t number) const; |
111 |
|
bool operator>(const Ranker& ranker) const; |
112 |
< |
bool operator<=(const unsigned number) const |
112 |
> |
bool operator<=(const size_t number) const |
113 |
|
{ |
114 |
|
return *this == number || *this < number; |
115 |
|
} |
117 |
|
{ |
118 |
|
return *this == ranker || *this < ranker; |
119 |
|
} |
120 |
< |
bool operator>=(const unsigned number) const |
120 |
> |
bool operator>=(const size_t number) const |
121 |
|
{ |
122 |
|
return *this == number || *this > number; |
123 |
|
} |
126 |
|
return *this == ranker || *this > ranker; |
127 |
|
} |
128 |
|
// friends: |
129 |
< |
friend bool operator==(const unsigned number, const Ranker& ranker) |
129 |
> |
friend bool operator==(const size_t number, const Ranker& ranker) |
130 |
|
{ |
131 |
|
return ranker == number; |
132 |
|
} |
133 |
< |
friend bool operator!=(const unsigned number, const Ranker& ranker) |
133 |
> |
friend bool operator!=(const size_t number, const Ranker& ranker) |
134 |
|
{ |
135 |
|
return ranker != number; |
136 |
|
} |
137 |
< |
friend bool operator>(const unsigned number, const Ranker& ranker) |
137 |
> |
friend bool operator>(const size_t number, const Ranker& ranker) |
138 |
|
{ |
139 |
|
return ranker < number; |
140 |
|
} |
141 |
< |
friend bool operator<(const unsigned number, const Ranker& ranker) |
141 |
> |
friend bool operator<(const size_t number, const Ranker& ranker) |
142 |
|
{ |
143 |
|
return ranker > number; |
144 |
|
} |
145 |
< |
friend bool operator>=(const unsigned number, const Ranker& ranker) |
145 |
> |
friend bool operator>=(const size_t number, const Ranker& ranker) |
146 |
|
{ |
147 |
|
return ranker <= number; |
148 |
|
} |
149 |
< |
friend bool operator<=(const unsigned number, const Ranker& ranker) |
149 |
> |
friend bool operator<=(const size_t number, const Ranker& ranker) |
150 |
|
{ |
151 |
|
return ranker >= number; |
152 |
|
} |