Помощь в построении перевернутого индекса

Это часть процесса поиска информации, который я делаю для школы. План состоит в том, чтобы создать хэш-карту слов, используя первые две буквы слова в качестве ключа и любые слова с двумя буквами, сохраненные в виде строкового значения. Так,

hashmap ["ba"] = "плохая база ячменя"

По окончании токенизации строки я беру эту хэш-карту, сериализую ее и добавляю в текстовый файл с именем ключа.

Идея состоит в том, что, если я возьму свои данные и распределю их по сотням файлов, я уменьшу время, необходимое для выполнения поиска, уменьшив плотность каждого файла. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я делаю более 100 файлов за каждый прогон, случается, что по каким-то причинам создается несколько файлов, поэтому эти записи пусты. Есть ли способ сделать это более эффективным? Стоит ли продолжать это, или я должен отказаться от этого?

Я хотел бы отметить, что я использую PHP. Два языка, которые я знаю относительно близко, - это PHP и Java. Я выбрал PHP, потому что интерфейс будет очень простым, и я смогу без проблем добавлять такие функции, как автозаполнение / поиск по запросу. Я также не вижу никакой выгоды в использовании Java. Любая помощь приветствуется, спасибо.

2 ответа

Решение

Я бы использовал один файл, чтобы получить и поместить сериализованную строку. Я бы также использовал json в качестве сериализации.

Положить данные

$string = "bad barley base";
$data = explode(" ",$string);
$hashmap["ba"] = $data;

$jsonContent = json_encode($hashmap);
file_put_contents("a-z.txt",$jsonContent);

Получить данные

$jsonContent = file_get_contents("a-z.txt");
$hashmap = json_decode($jsonContent);

foreach($hashmap as $firstTwoCharacters => $value) {
    if ($firstTwoCharacters == 'ba') {
        $wordCount = count($value);
    }
}

Вы не объяснили проблему, которую пытаетесь решить. Я предполагаю, что вы пытаетесь создать механизм полнотекстового поиска, но у вас нет идентификаторов документов в вашей хэш-карте, поэтому я не уверен, как вы используете хэш-карту для поиска подходящих документов.

Предполагая, что вам нужен механизм полнотекстового поиска, я хотел бы изучить использование структуры данных для структуры. Вы должны быть в состоянии вместить все в нем, не становясь слишком большим. Узлы, которые соответствуют слову, которое вы хотите проиндексировать, будут содержать идентификаторы документов, содержащих это слово.

Другие вопросы по тегам