From a49cd3f70ff230e1c850de9881631e3abcf34eab Mon Sep 17 00:00:00 2001 From: jsclose <jsclose@umich.edu> Date: Wed, 7 Mar 2018 15:28:55 -0500 Subject: [PATCH] intial search engine driver + queryParser --- CMakeLists.txt | 4 +- makefile | 132 +++++++++++++++++++++++++++++++++++++----------- query/Query.cpp | 47 +++++++++++++++++ query/Query.h | 24 +++++++++ search-engine | Bin 0 -> 25400 bytes search.cpp | 42 +++++++++++++++ 6 files changed, 219 insertions(+), 30 deletions(-) create mode 100644 query/Query.cpp create mode 100644 query/Query.h create mode 100755 search-engine create mode 100644 search.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 4142ac7..7d8e2bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ project(eecs398_search) set(CMAKE_CXX_STANDARD 11) -add_executable(search +add_executable(parser-test main.cpp shared/ProducerConsumerQueue.cpp shared/ProducerConsumerQueue.h @@ -54,6 +54,8 @@ add_executable(ParserEndToEndTest add_executable(URLTEST shared/url.h shared/urlTest.cpp) +add_executable(search-engine search.cpp query/Query.cpp) + find_package(OpenSSL REQUIRED) target_link_libraries(crawl OpenSSL::SSL pthread) diff --git a/makefile b/makefile index bca718e..1a41caa 100644 --- a/makefile +++ b/makefile @@ -110,6 +110,19 @@ depend: $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 .PHONY : depend +#============================================================================= +# Target rules for targets named search-engine + +# Build rule for target. +search-engine: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 search-engine +.PHONY : search-engine + +# fast build rule for target. +search-engine/fast: + $(MAKE) -f CMakeFiles/search-engine.dir/build.make CMakeFiles/search-engine.dir/build +.PHONY : search-engine/fast + #============================================================================= # Target rules for targets named URLTEST @@ -136,6 +149,19 @@ ParserEndToEndTest/fast: $(MAKE) -f CMakeFiles/ParserEndToEndTest.dir/build.make CMakeFiles/ParserEndToEndTest.dir/build .PHONY : ParserEndToEndTest/fast +#============================================================================= +# Target rules for targets named StemmerTest + +# Build rule for target. +StemmerTest: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 StemmerTest +.PHONY : StemmerTest + +# fast build rule for target. +StemmerTest/fast: + $(MAKE) -f CMakeFiles/StemmerTest.dir/build.make CMakeFiles/StemmerTest.dir/build +.PHONY : StemmerTest/fast + #============================================================================= # Target rules for targets named TokenizerTest @@ -176,30 +202,17 @@ crawl/fast: .PHONY : crawl/fast #============================================================================= -# Target rules for targets named StemmerTest - -# Build rule for target. -StemmerTest: cmake_check_build_system - $(MAKE) -f CMakeFiles/Makefile2 StemmerTest -.PHONY : StemmerTest - -# fast build rule for target. -StemmerTest/fast: - $(MAKE) -f CMakeFiles/StemmerTest.dir/build.make CMakeFiles/StemmerTest.dir/build -.PHONY : StemmerTest/fast - -#============================================================================= -# Target rules for targets named search +# Target rules for targets named parser-test # Build rule for target. -search: cmake_check_build_system - $(MAKE) -f CMakeFiles/Makefile2 search -.PHONY : search +parser-test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 parser-test +.PHONY : parser-test # fast build rule for target. -search/fast: - $(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/build -.PHONY : search/fast +parser-test/fast: + $(MAKE) -f CMakeFiles/parser-test.dir/build.make CMakeFiles/parser-test.dir/build +.PHONY : parser-test/fast crawler/SocketReader.o: crawler/SocketReader.cpp.o @@ -289,7 +302,7 @@ main.o: main.cpp.o # target to build an object file main.cpp.o: $(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/main.cpp.o - $(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/main.cpp.o + $(MAKE) -f CMakeFiles/parser-test.dir/build.make CMakeFiles/parser-test.dir/main.cpp.o .PHONY : main.cpp.o main.i: main.cpp.i @@ -299,7 +312,7 @@ main.i: main.cpp.i # target to preprocess a source file main.cpp.i: $(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/main.cpp.i - $(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/main.cpp.i + $(MAKE) -f CMakeFiles/parser-test.dir/build.make CMakeFiles/parser-test.dir/main.cpp.i .PHONY : main.cpp.i main.s: main.cpp.s @@ -309,7 +322,7 @@ main.s: main.cpp.s # target to generate assembly for a file main.cpp.s: $(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/main.cpp.s - $(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/main.cpp.s + $(MAKE) -f CMakeFiles/parser-test.dir/build.make CMakeFiles/parser-test.dir/main.cpp.s .PHONY : main.cpp.s parser/Parser.o: parser/Parser.cpp.o @@ -366,6 +379,60 @@ parser/tests/parserTest.cpp.s: $(MAKE) -f CMakeFiles/ParserEndToEndTest.dir/build.make CMakeFiles/ParserEndToEndTest.dir/parser/tests/parserTest.cpp.s .PHONY : parser/tests/parserTest.cpp.s +query/Query.o: query/Query.cpp.o + +.PHONY : query/Query.o + +# target to build an object file +query/Query.cpp.o: + $(MAKE) -f CMakeFiles/search-engine.dir/build.make CMakeFiles/search-engine.dir/query/Query.cpp.o +.PHONY : query/Query.cpp.o + +query/Query.i: query/Query.cpp.i + +.PHONY : query/Query.i + +# target to preprocess a source file +query/Query.cpp.i: + $(MAKE) -f CMakeFiles/search-engine.dir/build.make CMakeFiles/search-engine.dir/query/Query.cpp.i +.PHONY : query/Query.cpp.i + +query/Query.s: query/Query.cpp.s + +.PHONY : query/Query.s + +# target to generate assembly for a file +query/Query.cpp.s: + $(MAKE) -f CMakeFiles/search-engine.dir/build.make CMakeFiles/search-engine.dir/query/Query.cpp.s +.PHONY : query/Query.cpp.s + +search.o: search.cpp.o + +.PHONY : search.o + +# target to build an object file +search.cpp.o: + $(MAKE) -f CMakeFiles/search-engine.dir/build.make CMakeFiles/search-engine.dir/search.cpp.o +.PHONY : search.cpp.o + +search.i: search.cpp.i + +.PHONY : search.i + +# target to preprocess a source file +search.cpp.i: + $(MAKE) -f CMakeFiles/search-engine.dir/build.make CMakeFiles/search-engine.dir/search.cpp.i +.PHONY : search.cpp.i + +search.s: search.cpp.s + +.PHONY : search.s + +# target to generate assembly for a file +search.cpp.s: + $(MAKE) -f CMakeFiles/search-engine.dir/build.make CMakeFiles/search-engine.dir/search.cpp.s +.PHONY : search.cpp.s + shared/Document.o: shared/Document.cpp.o .PHONY : shared/Document.o @@ -399,7 +466,7 @@ shared/ProducerConsumerQueue.o: shared/ProducerConsumerQueue.cpp.o # target to build an object file shared/ProducerConsumerQueue.cpp.o: - $(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/shared/ProducerConsumerQueue.cpp.o + $(MAKE) -f CMakeFiles/parser-test.dir/build.make CMakeFiles/parser-test.dir/shared/ProducerConsumerQueue.cpp.o .PHONY : shared/ProducerConsumerQueue.cpp.o shared/ProducerConsumerQueue.i: shared/ProducerConsumerQueue.cpp.i @@ -408,7 +475,7 @@ shared/ProducerConsumerQueue.i: shared/ProducerConsumerQueue.cpp.i # target to preprocess a source file shared/ProducerConsumerQueue.cpp.i: - $(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/shared/ProducerConsumerQueue.cpp.i + $(MAKE) -f CMakeFiles/parser-test.dir/build.make CMakeFiles/parser-test.dir/shared/ProducerConsumerQueue.cpp.i .PHONY : shared/ProducerConsumerQueue.cpp.i shared/ProducerConsumerQueue.s: shared/ProducerConsumerQueue.cpp.s @@ -417,7 +484,7 @@ shared/ProducerConsumerQueue.s: shared/ProducerConsumerQueue.cpp.s # target to generate assembly for a file shared/ProducerConsumerQueue.cpp.s: - $(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/shared/ProducerConsumerQueue.cpp.s + $(MAKE) -f CMakeFiles/parser-test.dir/build.make CMakeFiles/parser-test.dir/shared/ProducerConsumerQueue.cpp.s .PHONY : shared/ProducerConsumerQueue.cpp.s shared/urlTest.o: shared/urlTest.cpp.o @@ -589,14 +656,15 @@ help: @echo "... clean" @echo "... depend" @echo "... edit_cache" + @echo "... search-engine" @echo "... URLTEST" @echo "... ParserEndToEndTest" + @echo "... rebuild_cache" + @echo "... StemmerTest" @echo "... TokenizerTest" @echo "... StringProcessingTest" @echo "... crawl" - @echo "... rebuild_cache" - @echo "... StemmerTest" - @echo "... search" + @echo "... parser-test" @echo "... crawler/SocketReader.o" @echo "... crawler/SocketReader.i" @echo "... crawler/SocketReader.s" @@ -615,6 +683,12 @@ help: @echo "... parser/tests/parserTest.o" @echo "... parser/tests/parserTest.i" @echo "... parser/tests/parserTest.s" + @echo "... query/Query.o" + @echo "... query/Query.i" + @echo "... query/Query.s" + @echo "... search.o" + @echo "... search.i" + @echo "... search.s" @echo "... shared/Document.o" @echo "... shared/Document.i" @echo "... shared/Document.s" diff --git a/query/Query.cpp b/query/Query.cpp new file mode 100644 index 0000000..8f2a62b --- /dev/null +++ b/query/Query.cpp @@ -0,0 +1,47 @@ +// +// Created by Jake Close on 3/7/18. +// + +#include "Query.h" +#include <iostream> +using namespace std; + +/* + * Searchs the index for the query + * + * + */ + +void QueryParser::search() + { + + if( strcmp(CompleteQuery, "-quit") == 0 ) + { + cout << "Thank you for using C++lue search engine" << endl; + exit(0); + } + else if(strcmp(CompleteQuery, "-help") == 0) + { + cout << "Manual" << endl; + } + + + + return; + + } + + +/* + * + * Prints the top 10 results + * + */ + +void QueryParser::printResults() + { + cout << " Generated XXX results in about XXX seconds " << endl; + + + return; + } \ No newline at end of file diff --git a/query/Query.h b/query/Query.h new file mode 100644 index 0000000..0ec50a0 --- /dev/null +++ b/query/Query.h @@ -0,0 +1,24 @@ +// +// Created by Jake Close on 3/7/18. +// + +#pragma once + +using namespace std; +class QueryParser + { + +public: + QueryParser( const char * query_in) : CompleteQuery( query_in ) + { }; + + void search(); + + void printResults(); + +private: + const char* CompleteQuery; + + }; + + diff --git a/search-engine b/search-engine new file mode 100755 index 0000000000000000000000000000000000000000..2a988337d4ec0110e82d9f37c9b1615797ceb080 GIT binary patch literal 25400 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 G0RIP5*A+Yf literal 0 HcmV?d00001 diff --git a/search.cpp b/search.cpp new file mode 100644 index 0000000..7225e1a --- /dev/null +++ b/search.cpp @@ -0,0 +1,42 @@ +// +// Created by Jake Close on 3/7/18. +// + +#include <iostream> +#include <stdlib.h> +#include <unistd.h> +#include "query/Query.h" + + +using namespace std; + + +int main( int argc, char *argv[] ) + { + + + cout << " --- WELCOME EECS 398 SEARCH ENGINE --- " << endl; + cout << endl; + cout << "What would you like to know? " << endl; + cout << endl; + cout << "type -q to exit or -help for more information" << endl; + string q; + + + + while(true) + { + + while ( getline( cin, q ) && !q.empty( )) + { + QueryParser *query = new QueryParser( q.c_str( )); + query->search( ); + query->printResults( ); + } + + } + + + return 0; + + } \ No newline at end of file -- GitLab