Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Virtuals
// Представляется библиотека, абстрагирующая операции индексирования и поиска для нескольких поисковых машин. // Представить набросок обертки для некоей поисковой машины и реализацию функции getEngine. // Библиотечные классы, представляющие поиск и индексирование, взаимодействуют (используют разделяемые данные -- как минимум, папку индекса). #include <iostream> #include <vector> #include <boost/shared_ptr.hpp> enum Task { TS_NONE = 0, TS_INDEX = 1, TS_SEARCH = 2, }; struct SearchEngine { virtual ~SearchEngine() {} }; class Indexer : virtual public SearchEngine { public: virtual bool IndexNode(int indexid, const std::vector<std::wstring>& data) = 0; }; class Searcher : virtual public SearchEngine { public: virtual bool SearchNode(int indexid, const std::wstring& query, std::vector<std::wstring>& fields, std::vector<std::vector<std::wstring>>& data) = 0; }; // ------------------------------------------------ enum class IndexType { None = 0, LucenePP = 1, Lucy = 2, CLucene = 3, Sphinx = 4, Dump = 5 }; // ... // ... <----- some library wrappers here // ... // ------------------------------------------------ SearchEngine* getEngine(const std::string index_folder, Task task = (Task)(Task::TS_INDEX | Task::TS_SEARCH), IndexType type = IndexType::LucenePP) { // ... <----- return nullptr; } int main() { boost::shared_ptr<SearchEngine> engine(getEngine(".", Task::TS_SEARCH)); return 0; }
run
|
edit
|
history
|
help
0
TwoANOVA
constructing object on first use as return value of (pointer to) object-returning function
Gauss Jordan Ida
ADP_campus
at_multimap_example
test yield
BintTree vertical sum
list
runtime template mode processor
Elevator 2