Volkivanv / search_engine

Diploma project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

search_engine

Локальный поисковый движок.

На вход подаются файлы config.json где указываются тексты по которым будет производится поиск по указанным в requests.json запросам. На выходе в качестве результата выдается answers.json, в котором по каждому из запросов список относительных релевантностей каждого из текстов.

используемые технологии

nlohmann_json для конвертации в JSON формат и обратно.

Библиотека Google Test для осуществления модульного тестирования

Запуск на локальной машине

  1. Скачать проект с github
  2. собрать проект

подготовка к запуску

  1. создать папке с исполняемым файлом файл config.json и request.json. За основу можно взять файлы examples/config.json и examples/requests.json
  2. в config.json в поле "max_responses" необходимо указать максимальное количество ответов на один запрос.
  3. в config.json в поле files указать пути к файлам по которым будет осуществляться поиск. В качестве примера указаны пути:
"files":["resources/file001.txt",
"resources/file002.txt",
"resources/file003.txt",
"resources/file004.txt"]
  1. файл request состоит из списка запросов. Каждый состоит из не более 1 000 слов. Между слов пробелы.

работа программы

При запуске программа показывает

"MySearchEngine" - Название поискового движка из файла config.json:
"0.1" - Версия. Она должна совпасть с версией приложения. В противном случае будет выдана ошибка.
5 - максимальное количество запросов

Далее идет проверка путей файлов:

"resources/file001.txt" found - означает что file001.txt" по указанному пути найден
"resources/file003.txt" found - -//-
"resources/file004.txt" found - -//-
Caught exception: "resources/file002.txt" File is missing - означает что file002.txt" по указанному пути не найден
Предлагается набор дальнейших команд:
If you want to execute search engine and write answer.json, please input "result".
If you want to exit, please input "exit"
Для продолжения требуется ввести команду result
программа производит поиск по файлам и составляется файл answer.json в котором находится результат запроса
В консоль при этом выдается количество найденных результатов по каждому запросу. Это количество текстов в которых ненулевой индекс релевантности и это количество ограничено значением max_responses.
request001 number of result: 0
request002 number of result: 1
request003 number of result: 3
..............................

Результат

Пример результата можно найти в файле examples/answers.json

● answers — базовое поле в этом файле, которое содержит ответы на запросы.

● request001 … 003 — идентификатор запроса, по которому сформирован ответ.

Идентификатор запроса формируется автоматически по порядку, в котором находятся запросы в поле requests файла requests.json. Например: "requests": [ "some words..", для данной строки id запроса будет равен “request001” "some words..", для данной строки id запроса будет равен “request002” "some words..", для данной строки id запроса будет равен “request003” "some words..", для данной строки id запроса будет равен “request004” … ]

● result – результат поиска запроса.

Если он принимает значение true, значит поданному запросу найден хотя бы один документ. Если результат имеет значение false, значит ни одного документа не найдено. Тогда других полей в ответе на этот запрос нет.

● relevance включается в файл answers.json, если на этот запрос удалось найти более одного документа.

Далее идут соответствия рейтинга ответа и названия id документа, в котором осуществлялся поиск:

● <Идентификатор документа>("docid") — идентификатор документа, в котором найден ответ на запрос.

Он формируется автоматически при индексации всех документов исходя из порядка, в котором документы расположены в поле files в файле config.json. Например, если в поле config.json поле files содержит:

"files": [
"../resources/file001.txt", для данного файла docid будет равен 0
"../resources/file002.txt", для данного файла docid будет равен 1
"../resources/file003.txt", для данного файла docid будет равен 2
"../resources/file004.txt", для данного файла docid будет равен 3
]
● <ранг ответа>(“rank”) — ранг или поисковый рейтинг.

Это число показывает, насколько документ подходит для заданного запроса. В ответе id документов располагаются в порядке уменьшения поискового рейтинга.

About

Diploma project


Languages

Language:C++ 90.0%Language:CMake 10.0%