SimplesImility - это простая в использовании структуру для семантического поиска текста.
Я рекомендую больше не использовать эту библиотеку в iOS 18. Ее функции теперь доступны в качестве системного сервиса в Core Spotlight. Пожалуйста, проверьте сеанс Apple WWDC 2024 Video «Поддержка Semantic Search Semantic с Core Spotlight».
Сначала вы должны создать текстовый корпус. Когда корпус заполнен, вы можете выполнить запросы против него. Эти методы являются частью класса MatchingEngine.
Текстовый корпус состоит из (большого) числа структурных структур. Структура TextualData - это текст плюс некоторые метаданные. Вы создаете экземпляры TextualData и передаете их подходящему двигателю:
let textualData = allFeedItems.map { (feedItem) -> TextualData in
return TextualData(inputString: feedItem.title, origin: nil, originObject: feedItem)
}
matchingEngine.fillMatchingEngine(with: textualData, onlyRemoveFrequentStopwords: true, completion: completion)
Как отмечалось до создания текстового корпуса, происходит в фоновом потоке, поэтому вам необходимо пройти в блоке завершения, чтобы не быть установленным, когда создается создание корпуса.
После создания корпуса вы можете запросить его. SimplesImilality не обязательно оптимизировано для коротких запросов или коротких записей в текстовом корпусе. Запрос должен содержать не менее 2 слов. Записи в текстовом корпусе должны быть предложениями.
Для текстового поиска у вас есть несколько параметров:
try? matchingEngine.result(betterThan: 0.005, for: query, resultsFound: resultsFound)
Результаты снова - это блок завершения, который проходит в найденных результатах.
Так что, как вы можете видеть, API действительно прост и прост в использовании.
Создание текстового корпуса с 15000 записей занимает около 20 секунд на iPhone 6s.
Ваш вклад приветствуются.