Autocomplete: higher scores for full hostnames

This commit is contained in:
James Magahern
2022-02-21 14:23:38 -08:00
parent e3bf6c5191
commit c8b4242bc6

View File

@@ -53,7 +53,8 @@ class BrowserHistory
let fetchRequest: NSFetchRequest<HistoryItemEntity> = HistoryItemEntity.fetchRequest() let fetchRequest: NSFetchRequest<HistoryItemEntity> = HistoryItemEntity.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "host CONTAINS %@ OR title contains %@", matching, matching) fetchRequest.predicate = NSPredicate(format: "host CONTAINS %@ OR title contains %@", matching, matching)
fetchRequest.fetchLimit = 100 fetchRequest.fetchLimit = 200
fetchRequest.sortDescriptors = [ NSSortDescriptor(key: "visitCount", ascending: false) ]
let entities: [HistoryItemEntity] = (try? dataContext.fetch(fetchRequest)) ?? [] let entities: [HistoryItemEntity] = (try? dataContext.fetch(fetchRequest)) ?? []
let allItems: [HistoryItem] = entities.map { HistoryItem(entity: $0) } let allItems: [HistoryItem] = entities.map { HistoryItem(entity: $0) }
@@ -61,13 +62,15 @@ class BrowserHistory
var topLevelItems: [URL: (HistoryItem, Int)] = [:] var topLevelItems: [URL: (HistoryItem, Int)] = [:]
for item in allItems { for item in allItems {
if item.url.pathComponents.count <= 2 { if item.url.pathComponents.count <= 2 {
var score = 1
let topLevelURL = item.url.topLevelURL() let topLevelURL = item.url.topLevelURL()
var topLevelItem = topLevelItems[topLevelURL] ?? (item, 0) var topLevelItem = topLevelItems[topLevelURL] ?? (item, 0)
topLevelItem.0.url = topLevelURL topLevelItem.0.url = topLevelURL
if item.url.path == "/" || item.url.path == "" { if item.url.path == "/" || item.url.path == "" {
score += 10
topLevelItem.0.title = item.title topLevelItem.0.title = item.title
} }
topLevelItem.1 += 1 topLevelItem.1 += score
topLevelItems[topLevelURL] = topLevelItem topLevelItems[topLevelURL] = topLevelItem
if topLevelItems.count == 20 { if topLevelItems.count == 20 {