Search bug fixed
This commit is contained in:
@@ -9,8 +9,8 @@ android {
|
|||||||
applicationId "xyz.quaver.pupil"
|
applicationId "xyz.quaver.pupil"
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 4
|
versionCode 5
|
||||||
versionName "1.3"
|
versionName "1.4"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.os.Bundle
|
|||||||
import android.preference.PreferenceManager
|
import android.preference.PreferenceManager
|
||||||
import android.text.*
|
import android.text.*
|
||||||
import android.text.style.AlignmentSpan
|
import android.text.style.AlignmentSpan
|
||||||
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
@@ -357,6 +358,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
cancelFetch()
|
cancelFetch()
|
||||||
clearGalleries()
|
clearGalleries()
|
||||||
fetchGalleries(query)
|
fetchGalleries(query)
|
||||||
|
loadBlocks()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ buildscript {
|
|||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.4.0'
|
classpath 'com.android.tools.build:gradle:3.4.1'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
|
||||||
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ fun doSearch(query: String) : List<Int> {
|
|||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.split(Regex("\\s+"))
|
.split(Regex("\\s+"))
|
||||||
|
|
||||||
val results = ArrayList<Int>()
|
|
||||||
val positiveTerms = LinkedList<String>()
|
val positiveTerms = LinkedList<String>()
|
||||||
val negativeTerms = LinkedList<String>()
|
val negativeTerms = LinkedList<String>()
|
||||||
|
|
||||||
@@ -26,33 +25,24 @@ fun doSearch(query: String) : List<Int> {
|
|||||||
positiveTerms.push(term)
|
positiveTerms.push(term)
|
||||||
}
|
}
|
||||||
|
|
||||||
//first results
|
var results = when {
|
||||||
results.addAll(
|
positiveTerms.isEmpty() -> getGalleryIDsFromNozomi(null, "index", "all")
|
||||||
if (positiveTerms.isEmpty())
|
else -> getGalleryIDsForQuery(positiveTerms.poll())
|
||||||
getGalleryIDsFromNozomi(null, "index", "all")
|
}
|
||||||
else
|
|
||||||
getGalleryIDsForQuery(positiveTerms.poll())
|
|
||||||
)
|
|
||||||
|
|
||||||
runBlocking {
|
runBlocking {
|
||||||
@Synchronized fun filterPositive(newResults: List<Int>) {
|
@Synchronized fun filterPositive(newResults: List<Int>) {
|
||||||
results.filter { newResults.binarySearch(it) >= 0 }.let {
|
results = results.filter { newResults.binarySearch(it) >= 0 }
|
||||||
results.clear()
|
|
||||||
results.addAll(it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized fun filterNegative(newResults: List<Int>) {
|
@Synchronized fun filterNegative(newResults: List<Int>) {
|
||||||
results.filterNot { newResults.binarySearch(it) >= 0 }.let {
|
results = results.filter { newResults.binarySearch(it) < 0 }
|
||||||
results.clear()
|
|
||||||
results.addAll(it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//positive results
|
//positive results
|
||||||
positiveTerms.map {
|
positiveTerms.map {
|
||||||
launch(searchDispatcher) {
|
launch(searchDispatcher) {
|
||||||
filterPositive(getGalleryIDsForQuery(it).reversed())
|
filterPositive(getGalleryIDsForQuery(it).sorted())
|
||||||
}
|
}
|
||||||
}.forEach {
|
}.forEach {
|
||||||
it.join()
|
it.join()
|
||||||
@@ -61,7 +51,7 @@ fun doSearch(query: String) : List<Int> {
|
|||||||
//negative results
|
//negative results
|
||||||
negativeTerms.map {
|
negativeTerms.map {
|
||||||
launch(searchDispatcher) {
|
launch(searchDispatcher) {
|
||||||
filterNegative(getGalleryIDsForQuery(it).reversed())
|
filterNegative(getGalleryIDsForQuery(it).sorted())
|
||||||
}
|
}
|
||||||
}.forEach {
|
}.forEach {
|
||||||
it.join()
|
it.join()
|
||||||
|
|||||||
@@ -21,10 +21,9 @@ class UnitTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun test_search() {
|
fun test_search() {
|
||||||
val ids = getGalleryIDsForQuery("female:loli").reversed()
|
val ids = getGalleryIDsForQuery("language:korean").reversed()
|
||||||
|
|
||||||
for (i in 0..100)
|
print(ids.size)
|
||||||
println(ids[i])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -36,7 +35,7 @@ class UnitTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun test_doSearch() {
|
fun test_doSearch() {
|
||||||
val r = doSearch("type:artistcg language:korean female:loli female:mind_break -female:anal")
|
val r = doSearch("female:loli female:bondage language:korean -male:yaoi -male:guro -female:guro")
|
||||||
|
|
||||||
print(r.size)
|
print(r.size)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user