2012-06-27 3 views
0

В настоящее время я пытаюсь реализовать какую-то систему поиска в моей программе и хотел использовать индекс, но я довольно новичок в Objective-C. Основная идея состоит в том, чтобы иметь команду «поиск» или текстовое поле, а когда я набираю слово, он покажет мне все элементы, которые включают это слово. Все эти «элементы» будут перечислены в TXT-файле (надеюсь) в алфавитном порядке. Любая помощь приветствуется.Objective-C Indexing

+0

Предполагается, что это небольшая «база данных» фильма, которая хранится в TXT-файле. Я буду программировать методы для поиска, добавления и удаления фильмов, а также для назначения фильмов клиенту, когда он «снимает» фильм. Единственная проблема, с которой я столкнулась, заключается в индексировании каждого слова в названии фильма, когда он добавлен, чтобы иметь возможность искать его позже. – iVikD

ответ

1

Вы должны прочитать файл .txt в качестве NSSet или какой-либо другой класс коллекции, и вы можете найти его, используя нечто вроде:

[words filterUsingPredicate:[NSPredicate predicateWithFormat:@"SELF contains[c] 'word'"]]; 

(см Predicate Guide для деталей).

1

Идеальная вещь, если текстовый файл большой, и вы хотите индексировать ведущие символы каждой записи, заключается в создании «допингового вектора» сортов, где каждая запись в векторе допинга содержит первые несколько символов строки, за которой следует смещение файла, где начинается строка. Обратите внимание, что одна запись вектора допинга может охватывать несколько строк файла, поскольку она просто служит как вкладки индекса в словаре.

Но если вы хотите найти слова в пределах строки в вашем файле, вам лучше использовать базу данных SQL или некоторую схему KWIC.

+0

Я бы ЛЮБЛЮ, чтобы использовать базы данных, однако я ограничены текстовыми файлами на этом. Мне нравится идея вектора допинга, но – iVikD

+0

@iVikD. Обратите внимание, что существуют различные схемы индексирования KWIC, которые используют «предварительно скомпилированный» файл данных для индексации базового файла данных, расширяющегося на основе векторного подхода. Тем не менее, он никогда не врывался в нее, кроме одной, относительно традиционной реализации дерева оснований. –