From d87de452e6fc331c5890487dc86faf69fd654568 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 18 Jun 2026 19:41:09 +0000 Subject: [PATCH] refactor: drop structural labels from FTS indexable content MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "title: ", "summary: ", "name: ", "Subject: ", "Option: " etc. prefixes were tokenized into the single FTS content column as literal words, so every event of a type matched bare terms like "title" or "summary" and the index carried useless tokens — the same field-name pollution we avoid for JSON kinds. The FTS table has one content column and search is plain-text MATCH, so the labels enabled no fielded search; they were pure noise. Index bare field values instead (listOfNotNull(...).joinToString("\n")), which also drops the "null" token the older one-liners produced for absent fields. Applied across all SearchableEvent implementations for consistency. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01RFdWREvyvixRXnmNXNzmmN --- .../experimental/music/playlist/MusicPlaylistEvent.kt | 7 +------ .../quartz/experimental/music/track/MusicTrackEvent.kt | 8 +------- .../quartz/experimental/nipsOnNostr/NipTextEvent.kt | 2 +- .../quartz/experimental/zapPolls/ZapPollEvent.kt | 2 +- .../quartz/feedDefinition/FeedDefinitionEvent.kt | 2 +- .../com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt | 2 +- .../quartz/nip23LongContent/LongTextNoteEvent.kt | 2 +- .../quartz/nip30CustomEmoji/pack/EmojiPackEvent.kt | 2 +- .../vitorpamplona/quartz/nip34Git/issue/GitIssueEvent.kt | 2 +- .../quartz/nip34Git/pr/GitPullRequestEvent.kt | 2 +- .../quartz/nip34Git/repository/GitRepositoryEvent.kt | 2 +- .../vitorpamplona/quartz/nip35Torrents/TorrentEvent.kt | 2 +- .../nip52Calendar/appt/day/CalendarDateSlotEvent.kt | 2 +- .../nip52Calendar/appt/time/CalendarTimeSlotEvent.kt | 2 +- .../quartz/nip52Calendar/calendar/CalendarEvent.kt | 2 +- .../meetingSpaces/MeetingSpaceEvent.kt | 2 +- .../nip53LiveActivities/streaming/LiveActivitiesEvent.kt | 2 +- .../quartz/nip58Badges/definition/BadgeDefinitionEvent.kt | 2 +- .../com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt | 2 +- .../quartz/nip71Video/AddressableVideoEvent.kt | 2 +- .../vitorpamplona/quartz/nip71Video/RegularVideoEvent.kt | 2 +- .../definition/CommunityDefinitionEvent.kt | 2 +- .../com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt | 2 +- .../com/vitorpamplona/quartz/nip7DThreads/ThreadEvent.kt | 2 +- .../quartz/nip84Highlights/HighlightEvent.kt | 2 +- .../quartz/nip99Classifieds/ClassifiedsEvent.kt | 2 +- .../quartz/nip01Core/store/fs/FsSearchTest.kt | 6 +++--- 27 files changed, 29 insertions(+), 40 deletions(-) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/music/playlist/MusicPlaylistEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/music/playlist/MusicPlaylistEvent.kt index 6d9e90ecff..3484ef974c 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/music/playlist/MusicPlaylistEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/music/playlist/MusicPlaylistEvent.kt @@ -88,12 +88,7 @@ class MusicPlaylistEvent( if (address.kind == MusicTrackEvent.KIND) address else null } - override fun indexableContent(): String = - buildString { - append("title: ").append(title().orEmpty()).append('\n') - description()?.let { append("description: ").append(it).append('\n') } - append(content) - } + override fun indexableContent(): String = listOfNotNull(title(), description(), content).joinToString("\n") companion object { const val KIND = 34139 diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/music/track/MusicTrackEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/music/track/MusicTrackEvent.kt index ed8a07b3cc..5256ee2c1b 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/music/track/MusicTrackEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/music/track/MusicTrackEvent.kt @@ -59,13 +59,7 @@ class MusicTrackEvent( sig: HexKey, ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent(): String = - buildString { - append("title: ").append(title().orEmpty()).append('\n') - append("artist: ").append(artist().orEmpty()).append('\n') - album()?.let { append("album: ").append(it).append('\n') } - append(content) - } + override fun indexableContent(): String = listOfNotNull(title(), artist(), album(), content).joinToString("\n") fun title() = tags.firstNotNullOfOrNull(TitleTag::parse) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/nipsOnNostr/NipTextEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/nipsOnNostr/NipTextEvent.kt index 992bbb51d7..f25763b1b2 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/nipsOnNostr/NipTextEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/nipsOnNostr/NipTextEvent.kt @@ -66,7 +66,7 @@ class NipTextEvent( AddressHintProvider, IForkableEvent, SearchableEvent { - override fun indexableContent() = "title: " + title() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), content).joinToString("\n") override fun dTag() = tags.dTag() diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/zapPolls/ZapPollEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/zapPolls/ZapPollEvent.kt index fb86132026..2b1ff294a1 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/zapPolls/ZapPollEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/experimental/zapPolls/ZapPollEvent.kt @@ -66,7 +66,7 @@ class ZapPollEvent( override fun indexableContent() = buildString { append(content) - pollOptionsArray().forEach { append("\nOption: ").append(it.descriptor) } + pollOptionsArray().forEach { append('\n').append(it.descriptor) } } override fun eventHints(): List { diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/feedDefinition/FeedDefinitionEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/feedDefinition/FeedDefinitionEvent.kt index 5b749c9d13..f51969b5af 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/feedDefinition/FeedDefinitionEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/feedDefinition/FeedDefinitionEvent.kt @@ -43,7 +43,7 @@ class FeedDefinitionEvent( sig: HexKey, ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + override fun indexableContent() = title().orEmpty() fun title(): String? = tags.firstOrNull { it.size >= 2 && it[0] == "title" }?.get(1) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt index c9120dbd2c..e2ab5a1f94 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt @@ -66,7 +66,7 @@ class TextNoteEvent( PubKeyHintProvider, IForkableEvent, SearchableEvent { - override fun indexableContent() = "Subject: " + subject() + "\n" + content + override fun indexableContent() = listOfNotNull(subject(), content).joinToString("\n") override fun eventHints(): List { val eHints = tags.mapNotNull(MarkedETag::parseAsHint) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt index 6eabe0f372..43d8c4c13c 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip23LongContent/LongTextNoteEvent.kt @@ -71,7 +71,7 @@ class LongTextNoteEvent( PublishedAtProvider, RootScope, SearchableEvent { - override fun indexableContent() = "title: " + title() + "\nsummary: " + summary() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), summary(), content).joinToString("\n") override fun eventHints(): List { val qHints = tags.mapNotNull(QTag::parseEventAsHint) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip30CustomEmoji/pack/EmojiPackEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip30CustomEmoji/pack/EmojiPackEvent.kt index c329c90fe9..46f9507929 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip30CustomEmoji/pack/EmojiPackEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip30CustomEmoji/pack/EmojiPackEvent.kt @@ -49,7 +49,7 @@ class EmojiPackEvent( sig: HexKey, ) : PrivateTagArrayEvent(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent() = "title: " + titleOrName().orEmpty() + "\ndescription: " + description().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(titleOrName(), description(), content).joinToString("\n") @Deprecated("NIP-51 has deprecated name. Use title instead", ReplaceWith("title()")) fun name() = tags.firstNotNullOfOrNull(NameTag::parse) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/issue/GitIssueEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/issue/GitIssueEvent.kt index a108126fb8..900a195233 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/issue/GitIssueEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/issue/GitIssueEvent.kt @@ -61,7 +61,7 @@ class GitIssueEvent( EventHintProvider, AddressHintProvider, SearchableEvent { - override fun indexableContent() = "Subject: " + subject() + "\n" + content + override fun indexableContent() = listOfNotNull(subject(), content).joinToString("\n") override fun eventHints(): List { val qHints = tags.mapNotNull(QTag::parseEventAsHint) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/pr/GitPullRequestEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/pr/GitPullRequestEvent.kt index baccf1a123..16cc045e87 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/pr/GitPullRequestEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/pr/GitPullRequestEvent.kt @@ -66,7 +66,7 @@ class GitPullRequestEvent( EventHintProvider, AddressHintProvider, SearchableEvent { - override fun indexableContent() = "Subject: " + subject().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(subject(), content).joinToString("\n") override fun pubKeyHints() = tags.mapNotNull(PTag::parseAsHint) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/repository/GitRepositoryEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/repository/GitRepositoryEvent.kt index 1f73cb11e5..3cce25f932 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/repository/GitRepositoryEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip34Git/repository/GitRepositoryEvent.kt @@ -52,7 +52,7 @@ class GitRepositoryEvent( sig: HexKey, ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent() = "name: " + name().orEmpty() + "\ndescription: " + description().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(name(), description(), content).joinToString("\n") fun name() = tags.firstNotNullOfOrNull(NameTag::parse) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip35Torrents/TorrentEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip35Torrents/TorrentEvent.kt index 8e167d7832..4648feaa5d 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip35Torrents/TorrentEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip35Torrents/TorrentEvent.kt @@ -52,7 +52,7 @@ class TorrentEvent( sig: HexKey, ) : Event(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), content).joinToString("\n") fun title() = tags.firstNotNullOfOrNull(TitleTag::parse) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/appt/day/CalendarDateSlotEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/appt/day/CalendarDateSlotEvent.kt index 248932823b..251404c1c8 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/appt/day/CalendarDateSlotEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/appt/day/CalendarDateSlotEvent.kt @@ -51,7 +51,7 @@ class CalendarDateSlotEvent( sig: HexKey, ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\nsummary: " + summary().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), summary(), content).joinToString("\n") fun title() = tags.firstNotNullOfOrNull(TitleTag.Companion::parse) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/appt/time/CalendarTimeSlotEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/appt/time/CalendarTimeSlotEvent.kt index 7d0a3f4126..b036c88979 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/appt/time/CalendarTimeSlotEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/appt/time/CalendarTimeSlotEvent.kt @@ -52,7 +52,7 @@ class CalendarTimeSlotEvent( sig: HexKey, ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\nsummary: " + summary().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), summary(), content).joinToString("\n") fun title() = tags.firstNotNullOfOrNull(TitleTag.Companion::parse) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/calendar/CalendarEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/calendar/CalendarEvent.kt index 864f5dbf7e..e11e4af522 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/calendar/CalendarEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip52Calendar/calendar/CalendarEvent.kt @@ -44,7 +44,7 @@ class CalendarEvent( sig: HexKey, ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), content).joinToString("\n") fun title() = tags.firstNotNullOfOrNull(TitleTag::parse) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip53LiveActivities/meetingSpaces/MeetingSpaceEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip53LiveActivities/meetingSpaces/MeetingSpaceEvent.kt index 1ee1f72b53..2e8d2b09d5 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip53LiveActivities/meetingSpaces/MeetingSpaceEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip53LiveActivities/meetingSpaces/MeetingSpaceEvent.kt @@ -55,7 +55,7 @@ class MeetingSpaceEvent( ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), PubKeyHintProvider, SearchableEvent { - override fun indexableContent() = "room: " + room().orEmpty() + "\nsummary: " + summary().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(room(), summary(), content).joinToString("\n") override fun pubKeyHints() = tags.mapNotNull(ParticipantTag::parseAsHint) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip53LiveActivities/streaming/LiveActivitiesEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip53LiveActivities/streaming/LiveActivitiesEvent.kt index f7b9380834..ea20dece90 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip53LiveActivities/streaming/LiveActivitiesEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip53LiveActivities/streaming/LiveActivitiesEvent.kt @@ -65,7 +65,7 @@ class LiveActivitiesEvent( PubKeyHintProvider, LiveStreamLike, SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\nsummary: " + summary().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), summary(), content).joinToString("\n") override fun eventHints(): List { val pinnedEvents = pinned() diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip58Badges/definition/BadgeDefinitionEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip58Badges/definition/BadgeDefinitionEvent.kt index 8283d7488d..df73ec3dae 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip58Badges/definition/BadgeDefinitionEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip58Badges/definition/BadgeDefinitionEvent.kt @@ -43,7 +43,7 @@ class BadgeDefinitionEvent( sig: HexKey, ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), SearchableEvent { - override fun indexableContent() = "name: " + name().orEmpty() + "\ndescription: " + description().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(name(), description(), content).joinToString("\n") fun name() = tags.badgeName() diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt index 1ffd61e484..4467964a30 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip68Picture/PictureEvent.kt @@ -48,7 +48,7 @@ class PictureEvent( ) : Event(id, pubKey, createdAt, KIND, tags, content, sig), RootScope, SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), content).joinToString("\n") @kotlinx.serialization.Transient @kotlin.jvm.Transient diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip71Video/AddressableVideoEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip71Video/AddressableVideoEvent.kt index 3f65ab4b6d..cb38c9e9ea 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip71Video/AddressableVideoEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip71Video/AddressableVideoEvent.kt @@ -51,7 +51,7 @@ abstract class AddressableVideoEvent( VideoEvent, RootScope, SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), content).joinToString("\n") @kotlinx.serialization.Transient @kotlin.jvm.Transient diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip71Video/RegularVideoEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip71Video/RegularVideoEvent.kt index 2c173e63c4..1ad28238f7 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip71Video/RegularVideoEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip71Video/RegularVideoEvent.kt @@ -51,7 +51,7 @@ abstract class RegularVideoEvent( VideoEvent, RootScope, SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), content).joinToString("\n") @kotlinx.serialization.Transient @kotlin.jvm.Transient diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip72ModCommunities/definition/CommunityDefinitionEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip72ModCommunities/definition/CommunityDefinitionEvent.kt index 4296066796..6a8a679b42 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip72ModCommunities/definition/CommunityDefinitionEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip72ModCommunities/definition/CommunityDefinitionEvent.kt @@ -58,7 +58,7 @@ class CommunityDefinitionEvent( AddressHintProvider, PubKeyHintProvider, SearchableEvent { - override fun indexableContent() = "name: " + name().orEmpty() + "\ndescription: " + description().orEmpty() + "\nrules: " + rules().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(name(), description(), rules(), content).joinToString("\n") override fun eventHints() = tags.mapNotNull(ETag::parseAsHint) + tags.mapNotNull(QTag::parseEventAsHint) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt index edb15c3077..a9e327cf5d 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip75ZapGoals/GoalEvent.kt @@ -60,7 +60,7 @@ class GoalEvent( AddressHintProvider, PubKeyHintProvider, SearchableEvent { - override fun indexableContent() = "summary: " + summary().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(summary(), content).joinToString("\n") override fun pubKeyHints() = tags.mapNotNull(PTag::parseAsHint) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip7DThreads/ThreadEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip7DThreads/ThreadEvent.kt index 9d3a755b17..d0cef02576 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip7DThreads/ThreadEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip7DThreads/ThreadEvent.kt @@ -41,7 +41,7 @@ class ThreadEvent( ) : Event(id, pubKey, createdAt, KIND, tags, content, sig), RootScope, SearchableEvent { - override fun indexableContent() = "title: " + title() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), content).joinToString("\n") fun title() = tags.title() diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip84Highlights/HighlightEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip84Highlights/HighlightEvent.kt index bb77e403e0..8327bd7a5d 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip84Highlights/HighlightEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip84Highlights/HighlightEvent.kt @@ -66,7 +66,7 @@ class HighlightEvent( AddressHintProvider, PubKeyHintProvider, SearchableEvent { - override fun indexableContent() = "comment: " + comment() + "\ncontext: " + context() + "\n" + content + override fun indexableContent() = listOfNotNull(comment(), context(), content).joinToString("\n") override fun eventHints(): List { val eHints = tags.mapNotNull(ETag::parseAsHint) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt index 25ed03c54f..b3c6101375 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip99Classifieds/ClassifiedsEvent.kt @@ -55,7 +55,7 @@ class ClassifiedsEvent( ) : BaseAddressableEvent(id, pubKey, createdAt, KIND, tags, content, sig), PublishedAtProvider, SearchableEvent { - override fun indexableContent() = "title: " + title().orEmpty() + "\nsummary: " + summary().orEmpty() + "\n" + content + override fun indexableContent() = listOfNotNull(title(), summary(), content).joinToString("\n") fun title() = tags.firstNotNullOfOrNull(TitleTag::parse) diff --git a/quartz/src/jvmTest/kotlin/com/vitorpamplona/quartz/nip01Core/store/fs/FsSearchTest.kt b/quartz/src/jvmTest/kotlin/com/vitorpamplona/quartz/nip01Core/store/fs/FsSearchTest.kt index 2d1c8013df..df24d3dcb6 100644 --- a/quartz/src/jvmTest/kotlin/com/vitorpamplona/quartz/nip01Core/store/fs/FsSearchTest.kt +++ b/quartz/src/jvmTest/kotlin/com/vitorpamplona/quartz/nip01Core/store/fs/FsSearchTest.kt @@ -105,9 +105,9 @@ class FsSearchTest { val ftsRoot = root.resolve("idx/fts") val tokenDirs = ftsRoot.listDirectoryEntries().map { it.fileName.toString() }.toSet() - // TextNoteEvent.indexableContent() prepends a "Subject: " prefix so - // we get the content tokens plus the subject ones. What matters is - // that each unique token yields exactly one entry under its dir. + // This note has no subject, so indexableContent() is just the + // content. What matters is that each unique token yields exactly + // one entry under its dir. assertTrue("bitcoin" in tokenDirs) assertTrue("nostr" in tokenDirs) assertEquals(1, ftsRoot.resolve("bitcoin").listDirectoryEntries().size)