summaryrefslogtreecommitdiff
path: root/src/domain/search.c
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-07-04 14:54:45 +0900
committertanaka takashi <isazaka@gmail.com>2026-07-04 14:54:45 +0900
commit1efecaef1f867cb218366e2b4ab4b901fdd2835f (patch)
tree3080a3d80a1a0671e8e82819d3f785465aace162 /src/domain/search.c
parent34e00404e9561dcaf8d2d99df7470757a4fee915 (diff)
途中経過コミット
Diffstat (limited to 'src/domain/search.c')
-rw-r--r--src/domain/search.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/domain/search.c b/src/domain/search.c
index 0f9179d..10109a7 100644
--- a/src/domain/search.c
+++ b/src/domain/search.c
@@ -458,6 +458,12 @@ tiny_search_index_add(tiny_search_index_t *index,
tiny_search_index_free(delta);
return false;
}
+ if (message->metadata.summary
+ && !index_text_direct(delta, message->metadata.summary, message_index))
+ {
+ tiny_search_index_free(delta);
+ return false;
+ }
for (tag = 0; tag < message->metadata.tag_count; ++tag)
{
if (!index_text_direct(delta, message->metadata.tags[tag], message_index))
@@ -609,6 +615,26 @@ tiny_search_score(const char *query, const tiny_message_t *message)
}
free(tag_points);
}
+ if (!found && message->metadata.summary)
+ {
+ uint32_t *summary_points = NULL;
+ size_t summary_count = 0;
+ if (decode_codepoints(message->metadata.summary, &summary_points, &summary_count))
+ {
+ for (message_offset = 0; message_offset + width <= summary_count; ++message_offset)
+ {
+ if (memcmp(query_points + query_offset,
+ summary_points + message_offset,
+ width * sizeof(uint32_t))
+ == 0)
+ {
+ found = true;
+ break;
+ }
+ }
+ }
+ free(summary_points);
+ }
if (found)
{
matches++;