diff --git a/Kiwix-iOS/Controller/MainVCDelegates.swift b/Kiwix-iOS/Controller/MainVCDelegates.swift
index e581e256..b680abe1 100644
--- a/Kiwix-iOS/Controller/MainVCDelegates.swift
+++ b/Kiwix-iOS/Controller/MainVCDelegates.swift
@@ -54,7 +54,7 @@ extension MainVC: LPTBarButtonItemDelegate, TableOfContentsDelegate, UISearchBar
}
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
- searchController?.searchText = searchText
+ searchController?.startSearch(searchText, delayed: true)
}
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
diff --git a/Kiwix-iOS/Controller/Search/RecentSearchCVC.swift b/Kiwix-iOS/Controller/Search/RecentSearchCVC.swift
index 01203862..faeadb27 100644
--- a/Kiwix-iOS/Controller/Search/RecentSearchCVC.swift
+++ b/Kiwix-iOS/Controller/Search/RecentSearchCVC.swift
@@ -59,11 +59,11 @@ class RecentSearchCVC: UIViewController, UICollectionViewDataSource, UICollectio
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
guard let mainVC = parentViewController?.parentViewController?.parentViewController as? MainVC,
- let SearchController = parentViewController?.parentViewController as? SearchController,
+ let searchController = parentViewController?.parentViewController as? SearchController,
let cell = collectionView.cellForItemAtIndexPath(indexPath) as? LocalLangCell,
let text = cell.label.text else {return}
mainVC.searchBar.text = text
- SearchController.searchText = text
+ searchController.startSearch(text, delayed: false)
collectionView.deselectItemAtIndexPath(indexPath, animated: true)
}
diff --git a/Kiwix-iOS/Controller/SearchController.swift b/Kiwix-iOS/Controller/SearchController.swift
index 5dc35569..9fa49b39 100644
--- a/Kiwix-iOS/Controller/SearchController.swift
+++ b/Kiwix-iOS/Controller/SearchController.swift
@@ -15,10 +15,9 @@ class SearchController: UIViewController, UISearchBarDelegate, UIGestureRecogniz
@IBOutlet var tapGestureRecognizer: UITapGestureRecognizer!
var searchResultTBVC: SearchResultTBVC?
- var searchText = "" {
+ private var searchText = "" {
didSet {
configureViewVisibility()
- searchResultTBVC?.startSearch(searchText)
}
}
@@ -57,6 +56,22 @@ class SearchController: UIViewController, UISearchBarDelegate, UIGestureRecogniz
}
}
+ // MARK: - Search
+
+ func startSearch(searchText: String, delayed: Bool) {
+ self.searchText = searchText
+ if delayed {
+ let previousSearchText = searchText
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(275 * USEC_PER_SEC)), dispatch_get_main_queue()) {
+ print("\(previousSearchText), \(self.searchText)")
+ guard previousSearchText == self.searchText else {return}
+ self.searchResultTBVC?.startSearch(self.searchText)
+ }
+ } else {
+ searchResultTBVC?.startSearch(self.searchText)
+ }
+ }
+
// MARK: - Handle Gesture
func handleTap(tapGestureRecognizer: UIGestureRecognizer) {
diff --git a/Kiwix-iOS/Info.plist b/Kiwix-iOS/Info.plist
index 690f9866..39ff4165 100644
--- a/Kiwix-iOS/Info.plist
+++ b/Kiwix-iOS/Info.plist
@@ -36,7 +36,7 @@
CFBundleSignature
????
CFBundleVersion
- 1388
+ 1416
ITSAppUsesNonExemptEncryption
LSRequiresIPhoneOS
diff --git a/Kiwix/SearchOperation.swift b/Kiwix/SearchOperation.swift
index beb09ea8..1408b7fa 100644
--- a/Kiwix/SearchOperation.swift
+++ b/Kiwix/SearchOperation.swift
@@ -38,6 +38,7 @@ class SearchOperation: GroupOperation {
}
override func finished(errors: [NSError]) {
+ print(cancelled)
NSOperationQueue.mainQueue().addOperationWithBlock {
self.completionHandler(self.results)
}
diff --git a/Kiwix/ZimMultiReader.swift b/Kiwix/ZimMultiReader.swift
index ac030eed..0c6862a5 100644
--- a/Kiwix/ZimMultiReader.swift
+++ b/Kiwix/ZimMultiReader.swift
@@ -168,7 +168,13 @@ class SearchResult: CustomStringConvertible {
let probability: Double? // range: 0.0 - 1.0
let distance: Int // Levenshtein distance, non negative integer
- let score: Double
+ private(set) lazy var score: Double = {
+ if let probability = self.probability {
+ return WeightFactor.calculate(probability) * Double(self.distance)
+ } else {
+ return Double(self.distance)
+ }
+ }()
init?(rawResult: [String: AnyObject]) {
let title = (rawResult["title"] as? String) ?? ""
@@ -184,7 +190,6 @@ class SearchResult: CustomStringConvertible {
return nil
}
}()
- let score = WeightFactor.calculate(probability ?? 1) * Double(distance)
self.title = title
self.path = path
@@ -192,7 +197,6 @@ class SearchResult: CustomStringConvertible {
self.snippet = snippet
self.probability = probability
self.distance = distance
- self.score = score
if title == "" || path == "" || bookID == "" {return nil}
}