Simplesimilarity es un marco fácil de usar para la búsqueda de texto semántico.
Recomiendo ya no usar esta biblioteca en iOS 18. Sus características ahora están disponibles como un servicio de sistema en Core Spotlight. Consulte el video de sesión WWDC 2024 de Apple "Soporte de búsqueda semántica con Core Spotlight".
Primero tienes que crear un corpus de texto. Cuando se llena el corpus, puede ejecutar consultas contra él. Estos métodos son parte de la clase MatchingEngine.
El corpus de texto consiste en un número (grande) de estructuras de datos textuales. La estructura TextualData es el texto más algunos metadatos. Creas instancias TextualData y las pasa al motor coincidente:
let textualData = allFeedItems.map { (feedItem) -> TextualData in
return TextualData(inputString: feedItem.title, origin: nil, originObject: feedItem)
}
matchingEngine.fillMatchingEngine(with: textualData, onlyRemoveFrequentStopwords: true, completion: completion)
Como se señaló antes, la creación del Corpus de texto ocurre en un hilo de fondo, por lo que debe pasar en un bloque de finalización para que no esté bien cuando se realiza la creación del corpus.
Después de que se haya creado el corpus, puede consultarlo. Simplesimilarity no está necesariamente optimizado para consultas cortas o entradas cortas en el corpus de texto. La consulta debe contener al menos 2 palabras. Las entradas en el corpus de texto deben ser oraciones.
Para la búsqueda textual tiene múltiples opciones:
try? matchingEngine.result(betterThan: 0.005, for: query, resultsFound: resultsFound)
Resultsfound es nuevamente un bloque de finalización que pasa en los resultados encontrados.
Entonces, como puede ver, la API es realmente simple y fácil de usar.
La creación de un corpus de texto con entradas de 15000 se lleva alrededor de 20 segundos en un iPhone 6s.
Sus contribuciones son bienvenidas.