Merge pull request #3 from tom5079/development

Search bug fixed (v1.4 released)
This commit is contained in:
tom5079
2019-05-16 16:26:58 +09:00
committed by GitHub
5 changed files with 16 additions and 25 deletions

View File

@@ -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 {

View File

@@ -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()
} }
} }
} }

View File

@@ -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"

View File

@@ -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()

View File

@@ -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)
} }