diff options
Diffstat (limited to 'src/domain/search.c')
| -rw-r--r-- | src/domain/search.c | 26 |
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++; |
