1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/******************************************************************** 2b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Copyright (c) 2001-2011 International Business Machines 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Corporation and others. All Rights Reserved. 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ******************************************************************** 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * File USRCHDAT.H 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Modification History: 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Name date Description 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * synwee July 31 2001 creation 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/ 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruNote: This file is included by other C and C++ files. This file should not be directly compiled. 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef USRCHDAT_C 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define USRCHDAT_C 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/ucol.h" 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_COLLATION 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 22c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/* Set to 1 if matches must be on grapheme boundaries */ 23c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define GRAPHEME_BOUNDARIES 1 24c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CDECL_BEGIN 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustruct SearchData { 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *text; 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *pattern; 2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char *collator; /* currently supported "fr" "es" "de", plus NULL/other => "en" */ 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UCollationStrength strength; 3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho USearchAttributeValue elemCompare; /* value for the USEARCH_ELEMENT_COMPARISON attribute */ 3250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const char *breaker; /* currently supported "wordbreaker" for EN_WORDBREAKER_, plus NULL/other => EN_CHARACTERBREAKER_ */ 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int8_t offset[32]; 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uint8_t size[32]; 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_CDECL_END 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef struct SearchData SearchData; 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char *TESTCOLLATORRULE = "& o,O ; p,P"; 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char *EXTRACOLLATIONRULE = " & ae ; \\u00e4 & AE ; \\u00c4 & oe ; \\u00f6 & OE ; \\u00d6 & ue ; \\u00fc & UE ; \\u00dc"; 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData BASIC[] = { 4550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"xxxxxxxxxxxxxxxxxxxx", "fisher", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 4650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"silly spring string", "string", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {13, -1}, 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {6}}, 4850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"silly spring string string", "string", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {13, 20, -1}, {6, 6}}, 5050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"silly string spring string", "string", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {6, 20, -1}, {6, 6}}, 5250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"string spring string", "string", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 14, -1}, 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {6, 6}}, 5450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"Scott Ganyo", "c", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 5550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"Scott Ganyo", " ", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {5, -1}, {1}}, 5650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 5750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 58c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 59c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 6050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 6150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300b", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 62c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 6350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 6450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300b", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 65c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 66c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 6750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00c9", "e", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 68b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho {"x a\\u0301", "a\\u0301", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {2, -1}, {2}}, 6950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData BREAKITERATOREXACT[] = { 7350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"foxy fox", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "characterbreaker", {0, 5, -1}, 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {3, 3}}, 7550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"foxy fox", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {5, -1}, {3}}, 7650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"This is a toe T\\u00F6ne", "toe", "de", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "characterbreaker", {10, 14, -1}, {3, 2}}, 7850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"This is a toe T\\u00F6ne", "toe", "de", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {10, -1}, {3}}, 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"Channel, another channel, more channels, and one last Channel", 8150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "Channel", "es", UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {0, 54, -1}, {7, 7}}, 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* jitterbug 1745 */ 8350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"testing that \\u00e9 does not match e", "e", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "characterbreaker", {1, 17, 30, -1}, {1, 1, 1}}, 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"testing that string ab\\u00e9cd does not match e", "e", NULL, 8650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "characterbreaker", {1, 28, 41, -1}, {1, 1, 1}}, 8750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00c9", "e", "fr", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "characterbreaker", {0, -1}, {1}}, 88c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if 0 89c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* Problem reported by Dave Bertoni, same as ticket 4279? */ 9050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0043\\u004F\\u0302\\u0054\\u00C9", "\\u004F", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "characterbreaker", {1, -1}, {2}}, 91c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 9250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 9350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho}; 9450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 9550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define PECHE_WITH_ACCENTS "un p\\u00E9ch\\u00E9, " \ 9650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "\\u00E7a p\\u00E8che par, " \ 9750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "p\\u00E9cher, " \ 9850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "une p\\u00EAche, " \ 9950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "un p\\u00EAcher, " \ 10050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "j\\u2019ai p\\u00EAch\\u00E9, " \ 10150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "un p\\u00E9cheur, " \ 10250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "\\u201Cp\\u00E9che\\u201D, " \ 10350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "decomp peche\\u0301, " \ 10450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "base peche" 10550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* in the above, the interesting words and their offsets are: 10650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3 pe<301>che<301> 10750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 13 pe<300>che 10850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 24 pe<301>cher 10950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 36 pe<302>che 11050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 46 pe<302>cher 11150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 59 pe<302>che<301> 11250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 69 pe<301>cheur 11350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 79 pe<301>che 11450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 94 peche<+301> 11550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho107 peche 11650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*/ 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData STRENGTH[] = { 11950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*012345678901234567890123456789012345678901234567890123456789*/ 12050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*00*/{"The quick brown fox jumps over the lazy foxes", "fox", "en", 12150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {16, 40, -1}, {3, 3}}, 12250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*01*/{"The quick brown fox jumps over the lazy foxes", "fox", "en", 12350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {16, -1}, {3}}, 12450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*02*/{"blackbirds Pat p\\u00E9ch\\u00E9 p\\u00EAche p\\u00E9cher p\\u00EAcher Tod T\\u00F6ne black Tofu blackbirds Ton PAT toehold blackbird black-bird pat toe big Toe", 12550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "peche", "fr", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {15, 21, 27, 34, -1}, {5, 5, 5, 5}}, 12650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*03*/{"This is a toe T\\u00F6ne", "toe", "de", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 12750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {10, 14, -1}, {3, 2}}, 12850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*04*/{"A channel, another CHANNEL, more Channels, and one last channel...", 12950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "channel", "es", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {2, 19, 33, 56, -1}, {7, 7, 7, 7}}, 13050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*05*/{"\\u00c0 should match but not A", "A\\u0300", "en", UCOL_IDENTICAL, USEARCH_STANDARD_ELEMENT_COMPARISON, 13150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho NULL, {0, -1}, {1, 0}}, 13250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /* some tests for modified element comparison, ticket #7093 */ 13350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*06*/{PECHE_WITH_ACCENTS, "peche", "en", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, 13, 24, 36, 46, 59, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 5, 5, 5, 6, 5}}, 13450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*07*/{PECHE_WITH_ACCENTS, "peche", "en", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {3, 13, 36, 59, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 6, 5}}, 13550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*08*/{PECHE_WITH_ACCENTS, "peche", "en", UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {107, -1}, {5}}, 13650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*09*/{PECHE_WITH_ACCENTS, "peche", "en", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 13, 24, 36, 46, 59, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 5, 5, 5, 6, 5}}, 13750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*10*/{PECHE_WITH_ACCENTS, "peche", "en", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 13, 36, 59, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 6, 5}}, 13850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*11*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "en", UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {24, 69, 79, -1}, {5, 5, 5}}, 13950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*12*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "en", UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {79, -1}, {5}}, 14050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*13*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "en", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 24, 69, 79, -1}, {5, 5, 5, 5}}, 14150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*14*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "en", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 79, -1}, {5, 5}}, 14250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*15*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "en", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 24, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 6, 5}}, 14350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*16*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "en", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 79, 94, 107, -1}, {5, 5, 6, 5}}, 14450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*17*/{PECHE_WITH_ACCENTS, "pech\\u00E9", "en", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 59, 94, -1}, {5, 5, 6}}, 14550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*18*/{PECHE_WITH_ACCENTS, "pech\\u00E9", "en", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 59, 94, -1}, {5, 5, 6}}, 14650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*19*/{PECHE_WITH_ACCENTS, "pech\\u00E9", "en", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 13, 24, 36, 46, 59, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 5, 5, 5, 6, 5}}, 14750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*20*/{PECHE_WITH_ACCENTS, "pech\\u00E9", "en", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 13, 36, 59, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 6, 5}}, 14850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*21*/{PECHE_WITH_ACCENTS, "peche\\u0301", "en", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 59, 94, -1}, {5, 5, 6}}, 14950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*22*/{PECHE_WITH_ACCENTS, "peche\\u0301", "en", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 59, 94, -1}, {5, 5, 6}}, 15050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*23*/{PECHE_WITH_ACCENTS, "peche\\u0301", "en", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 13, 24, 36, 46, 59, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 5, 5, 5, 6, 5}}, 15150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*24*/{PECHE_WITH_ACCENTS, "peche\\u0301", "en", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 13, 36, 59, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 6, 5}}, 15250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /* more tests for modified element comparison (with fr), ticket #7093 */ 15350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*25*/{PECHE_WITH_ACCENTS, "peche", "fr", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, 13, 24, 36, 46, 59, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 5, 5, 5, 6, 5}}, 15450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*26*/{PECHE_WITH_ACCENTS, "peche", "fr", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {3, 13, 36, 59, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 6, 5}}, 15550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*27*/{PECHE_WITH_ACCENTS, "peche", "fr", UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {107, -1}, {5}}, 15650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*28*/{PECHE_WITH_ACCENTS, "peche", "fr", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 13, 24, 36, 46, 59, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 5, 5, 5, 6, 5}}, 15750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*29*/{PECHE_WITH_ACCENTS, "peche", "fr", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 13, 36, 59, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 6, 5}}, 15850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*30*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "fr", UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {24, 69, 79, -1}, {5, 5, 5}}, 15950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*31*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "fr", UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {79, -1}, {5}}, 16050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*32*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "fr", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 24, 69, 79, -1}, {5, 5, 5, 5}}, 16150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*33*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "fr", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 79, -1}, {5, 5}}, 16250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*34*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "fr", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 24, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 6, 5}}, 16350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*35*/{PECHE_WITH_ACCENTS, "p\\u00E9che", "fr", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 79, 94, 107, -1}, {5, 5, 6, 5}}, 16450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*36*/{PECHE_WITH_ACCENTS, "pech\\u00E9", "fr", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 59, 94, -1}, {5, 5, 6}}, 16550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*37*/{PECHE_WITH_ACCENTS, "pech\\u00E9", "fr", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 59, 94, -1}, {5, 5, 6}}, 16650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*38*/{PECHE_WITH_ACCENTS, "pech\\u00E9", "fr", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 13, 24, 36, 46, 59, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 5, 5, 5, 6, 5}}, 16750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*39*/{PECHE_WITH_ACCENTS, "pech\\u00E9", "fr", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 13, 36, 59, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 6, 5}}, 16850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*40*/{PECHE_WITH_ACCENTS, "peche\\u0301", "fr", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 59, 94, -1}, {5, 5, 6}}, 16950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*41*/{PECHE_WITH_ACCENTS, "peche\\u0301", "fr", UCOL_SECONDARY, USEARCH_PATTERN_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 59, 94, -1}, {5, 5, 6}}, 17050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*42*/{PECHE_WITH_ACCENTS, "peche\\u0301", "fr", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, NULL, {3, 13, 24, 36, 46, 59, 69, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 5, 5, 5, 6, 5}}, 17150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /*43*/{PECHE_WITH_ACCENTS, "peche\\u0301", "fr", UCOL_SECONDARY, USEARCH_ANY_BASE_WEIGHT_IS_WILDCARD, "wordbreaker", {3, 13, 36, 59, 79, 94, 107, -1}, {5, 5, 5, 5, 5, 6, 5}}, 172c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 173c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if 0 174c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* Ticket 5382 */ 17550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"12\\u0171", "\\u0170", NULL, UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {2, -1}, {2}}, 176c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 177c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 17850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData VARIABLE[] = { 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /*012345678901234567890123456789012345678901234567890123456789*/ 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"blackbirds black blackbirds blackbird black-bird", 18450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "blackbird", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 17, 28, 38, -1}, 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {9, 9, 9, 10}}, 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* to see that it doesn't go into an infinite loop if the start of text 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru is a ignorable character */ 18850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {" on", "go", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 18950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"abcdefghijklmnopqrstuvwxyz", " ", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 20, 21, 22, 23, 24, 25, -1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* testing tightest match */ 19450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {" abc a bc ab c a bc ab c", "abc", NULL, UCOL_QUATERNARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, {1, -1}, {3}}, 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /*012345678901234567890123456789012345678901234567890123456789 */ 19750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {" abc a bc ab c a bc ab c", "abc", NULL, UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, {1, 6, 13, 21, 31, -1}, {3, 4, 4, 5, 5}}, 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* totally ignorable text */ 20050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {" ---------------", "abc", NULL, UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, {-1}, {0}}, 20250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData NORMEXACT[] = { 20650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "a\\u0325\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {3}}, 207c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 208c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 20950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0325\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 210c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 21150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0325\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 212c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 213c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 21450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData NONNORMEXACT[] = { 21850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0325\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 21950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData OVERLAP[] = { 22350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"abababab", "abab", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 2, 4, -1}, 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {4, 4, 4}}, 22550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData NONOVERLAP[] = { 22950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"abababab", "abab", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 4, -1}, {4, 4}}, 23050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData COLLATOR[] = { 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* english */ 23550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"fox fpx", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {3}}, 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* tailored */ 23750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"fox fpx", "fox", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 4, -1}, {3, 3}}, 23850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData PATTERN[] = { 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"The quick brown fox jumps over the lazy foxes", "the", NULL, 24350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 31, -1}, {3, 3}}, 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"The quick brown fox jumps over the lazy foxes", "fox", NULL, 24550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {16, 40, -1}, {3, 3}}, 24650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData TEXT[] = { 25050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"the foxy brown fox", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {4, 15, -1}, 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {3, 3}}, 25250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"the quick brown fox", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {16, -1}, 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {3}}, 25450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData COMPOSITEBOUNDARIES[] = { 258c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 25950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 26050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u00C0C", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 26150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0A", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 26250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"B\\u00C0", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 26350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0B", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 26450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 26550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u00C0", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 266c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 26750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 26850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u00C0C", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 1, -1}, {1, 1}}, 26950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0A", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 1, -1}, {1, 1}}, 27050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"B\\u00C0", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 27150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0B", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 27250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 27350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u00C0", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 1, -1}, 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {1, 1}}, 275c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 276c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 27750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0\\u0300", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* A + 030A + 0301 */ 27950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u01FA", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 28050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "A\\u030A\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 28150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 28250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "A\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 28350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030AA", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 28450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 28550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "A\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 28650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u0301A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 287c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 288c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 28950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030A\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 290c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 29150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030A\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 292c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 293c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 29450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u01FA", "A\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 29550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FAA", "\\u0301A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 29650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F73", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 29750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F71", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 29850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F72", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 29950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F71\\u0F72", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 30050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0F73", "A\\u0F71", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 30150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73A", "\\u0F72A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 302c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 303c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* Ticket 5024 */ 30450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u00e1", "a\\u00e1", NULL, UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 305c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 306c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* Ticket 5420 */ 30750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"fu\\u00dfball", "fu\\u00df", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {3}}, 30850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"fu\\u00dfball", "fuss", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {3}}, 30950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"fu\\u00dfball", "uss", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 310c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 31150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData MATCH[] = { 31550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a busy bee is a very busy beeee", "bee", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {7, 26, -1}, {3, 3}}, 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 012345678901234567890123456789012345678901234567890 */ 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"a busy bee is a very busy beeee with no bee life", "bee", NULL, 31950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {7, 26, 40, -1}, {3, 3, 3}}, 32050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData SUPPLEMENTARY[] = { 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 012345678901234567890123456789012345678901234567890012345678901234567890123456789012345678901234567890012345678901234567890123456789 */ 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"abc \\uD800\\uDC00 \\uD800\\uDC01 \\uD801\\uDC00 \\uD800\\uDC00abc abc\\uD800\\uDC00 \\uD800\\uD800\\uDC00 \\uD800\\uDC00\\uDC00", 32650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "\\uD800\\uDC00", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {4, 13, 22, 26, 29, -1}, 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {2, 2, 2, 2, 2}}, 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and\\uD834\\uDDB9this sentence", "\\uD834\\uDDB9", NULL, 32950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {2}}, 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and \\uD834\\uDDB9 this sentence", " \\uD834\\uDDB9 ", NULL, 33150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {4}}, 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and-\\uD834\\uDDB9-this sentence", "-\\uD834\\uDDB9-", NULL, 33350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {4}}, 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and,\\uD834\\uDDB9,this sentence", ",\\uD834\\uDDB9,", NULL, 33550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {4}}, 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and?\\uD834\\uDDB9?this sentence", "?\\uD834\\uDDB9?", NULL, 33750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {4}}, 33850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char *CONTRACTIONRULE = 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "&z = ab/c < AB < X\\u0300 < ABC < X\\u0300\\u0315"; 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData CONTRACTION[] = { 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* common discontiguous */ 34650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0300\\u0315", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 347c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 348c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 34950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0300\\u0315", "\\u0300\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 350c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 35150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0300\\u0315", "\\u0300\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 352c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 353c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* contraction prefix */ 35550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 356c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 357c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 35850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "AB", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 35950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 360c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 36150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "AB", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 36250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {2, -1}, {1}}, 363c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 364c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* discontiguous problem here for backwards iteration. 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru accents not found because discontiguous stores all information */ 36750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0300\\u0319\\u0315", "\\u0319", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0}}, 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* ends not with a contraction character */ 37050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0315\\u0300D", "\\u0300\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0}}, 37250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0315\\u0300D", "X\\u0300\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0, -1}, {3}}, 37450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0300\\u031A\\u0315D", "X\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0}}, 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* blocked discontiguous */ 37750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0300\\u031A\\u0315D", "\\u031A\\u0315D", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {-1}, {0}}, 379c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 380c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 381c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* 382c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * "ab" generates a contraction that's an expansion. The "z" matches the 383c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * first CE of the expansion but the match fails because it ends in the 384c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * middle of an expansion... 385c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 38650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"ab", "z", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 387c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 38850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"ab", "z", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 389c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 390c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 39150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char *IGNORABLERULE = "&a = \\u0300"; 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData IGNORABLE[] = { 397c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 398c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* 399c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * This isn't much of a test when matches have to be on 400c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * grapheme boundiaries. The match at 0 only works because 401c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * it's at the start of the text. 402c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 40350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0315 \\u0300\\u0315 ", "\\u0300", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 404c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru {0, -1}, {2}}, 405c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 40650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0315 \\u0300\\u0315 ", "\\u0300", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0, 3, -1}, {2, 2}}, 408c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 409c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 41050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData BASICCANONICAL[] = { 41450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"xxxxxxxxxxxxxxxxxxxx", "fisher", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 41550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"silly spring string", "string", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {13, -1}, 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {6}}, 41750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"silly spring string string", "string", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {13, 20, -1}, {6, 6}}, 41950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"silly string spring string", "string", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {6, 20, -1}, {6, 6}}, 42150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"string spring string", "string", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 14, -1}, 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {6, 6}}, 42350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"Scott Ganyo", "c", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 42450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"Scott Ganyo", " ", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {5, -1}, {1}}, 425c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 426c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 42750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 42850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 42950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 43050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300b", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 43150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325b", "\\u0300b", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 43250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0325\\u0300A\\u0325\\u0300", "\\u0300A\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 433c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru NULL, {-1}, {0}}, 43450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0325\\u0300A\\u0325\\u0300", "\\u0325A\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 435c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru NULL, {-1}, {0}}, 436c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru {"a\\u0300\\u0325b\\u0300\\u0325c \\u0325b\\u0300 \\u0300b\\u0325", 43750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "\\u0300b\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 438c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 43950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 44050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 44150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {2}}, 44350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300b", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 44450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325b", "\\u0300b", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {3}}, 44550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0325\\u0300A\\u0325\\u0300", "\\u0300A\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, {0, -1}, {5}}, 44750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0325\\u0300A\\u0325\\u0300", "\\u0325A\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, {0, -1}, {5}}, 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"a\\u0300\\u0325b\\u0300\\u0325c \\u0325b\\u0300 \\u0300b\\u0325", 45050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "\\u0300b\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, 12, -1}, {5, 3}}, 451c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 452c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 45350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00c4\\u0323", "A\\u0323\\u0308", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 45450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0308\\u0323", "\\u0323\\u0308", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 45550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 458c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData NORMCANONICAL[] = { 460c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 461c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* 462c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * These tests don't really mean anything. With matches restricted to grapheme 463c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * boundaries, isCanonicalMatch doesn't mean anything unless normalization is 464c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * also turned on... 465c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 46650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 46750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0325", "\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 46850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0325\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 46950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 47050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 47150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 472c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 47350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 47450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u0325", "\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 47550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0325\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {2}}, 47750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {2}}, 47950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0325", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 48050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a\\u0300\\u0325", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 481c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 482c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 48350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData BREAKITERATORCANONICAL[] = { 48750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"foxy fox", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "characterbreaker", {0, 5, -1}, 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {3, 3}}, 48950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"foxy fox", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {5, -1}, {3}}, 49050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"This is a toe T\\u00F6ne", "toe", "de", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "characterbreaker", {10, 14, -1}, {3, 2}}, 49250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"This is a toe T\\u00F6ne", "toe", "de", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {10, -1}, {3}}, 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"Channel, another channel, more channels, and one last Channel", 49550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "Channel", "es", UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {0, 54, -1}, {7, 7}}, 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* jitterbug 1745 */ 49750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"testing that \\u00e9 does not match e", "e", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "characterbreaker", {1, 17, 30, -1}, {1, 1, 1}}, 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"testing that string ab\\u00e9cd does not match e", "e", NULL, 50050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "characterbreaker", {1, 28, 41, -1}, {1, 1, 1}}, 50150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00c9", "e", "fr", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "characterbreaker", {0, -1}, {1}}, 50250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData STRENGTHCANONICAL[] = { 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /*012345678901234567890123456789012345678901234567890123456789 */ 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"The quick brown fox jumps over the lazy foxes", "fox", "en", 50850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {16, 40, -1}, {3, 3}}, 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"The quick brown fox jumps over the lazy foxes", "fox", "en", 51050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, "wordbreaker", {16, -1}, {3}}, 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"blackbirds Pat p\\u00E9ch\\u00E9 p\\u00EAche p\\u00E9cher p\\u00EAcher Tod T\\u00F6ne black Tofu blackbirds Ton PAT toehold blackbird black-bird pat toe big Toe", 51250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "peche", "fr", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {15, 21, 27, 34, -1}, {5, 5, 5, 5}}, 51350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"This is a toe T\\u00F6ne", "toe", "de", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {10, 14, -1}, {3, 2}}, 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"A channel, another CHANNEL, more Channels, and one last channel...", 51650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "channel", "es", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {2, 19, 33, 56, -1}, 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {7, 7, 7, 7}}, 51850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData VARIABLECANONICAL[] = { 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /*012345678901234567890123456789012345678901234567890123456789 */ 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"blackbirds black blackbirds blackbird black-bird", 52450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "blackbird", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 17, 28, 38, -1}, 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {9, 9, 9, 10}}, 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* to see that it doesn't go into an infinite loop if the start of text 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru is a ignorable character */ 52850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {" on", "go", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 52950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"abcdefghijklmnopqrstuvwxyz", " ", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 20, 21, 22, 23, 24, 25, -1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* testing tightest match */ 53450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {" abc a bc ab c a bc ab c", "abc", NULL, UCOL_QUATERNARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, {1, -1}, {3}}, 536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /*012345678901234567890123456789012345678901234567890123456789 */ 53750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {" abc a bc ab c a bc ab c", "abc", NULL, UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, {1, 6, 13, 21, 31, -1}, {3, 4, 4, 5, 5}}, 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* totally ignorable text */ 54050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {" ---------------", "abc", NULL, UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, {-1}, {0}}, 54250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData OVERLAPCANONICAL[] = { 54650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"abababab", "abab", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 2, 4, -1}, 547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {4, 4, 4}}, 54850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData NONOVERLAPCANONICAL[] = { 55250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"abababab", "abab", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 4, -1}, {4, 4}}, 55350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData COLLATORCANONICAL[] = { 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* english */ 55850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"fox fpx", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {3}}, 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* tailored */ 56050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"fox fpx", "fox", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 4, -1}, {3, 3}}, 56150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData PATTERNCANONICAL[] = { 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"The quick brown fox jumps over the lazy foxes", "the", NULL, 56650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 31, -1}, {3, 3}}, 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"The quick brown fox jumps over the lazy foxes", "fox", NULL, 56850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {16, 40, -1}, {3, 3}}, 56950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData TEXTCANONICAL[] = { 57350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"the foxy brown fox", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {4, 15, -1}, 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {3, 3}}, 57550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"the quick brown fox", "fox", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {16, -1}, 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {3}}, 57750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData COMPOSITEBOUNDARIESCANONICAL[] = { 581c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 58250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 58350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u00C0C", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 58450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0A", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 58550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"B\\u00C0", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 58650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0B", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 58750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 588c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 589c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* first one matches only because it's at the start of the text */ 59050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u00C0", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 591c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 592c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* \\u0300 blocked by \\u0300 */ 59350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0\\u0300", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 594c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 59550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 59650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u00C0C", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 1, -1}, {1, 1}}, 59750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0A", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 1, -1}, {1, 1}}, 59850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"B\\u00C0", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 59950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0B", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 60050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 60150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0300\\u00C0", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 1, -1}, 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {1, 1}}, 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* \\u0300 blocked by \\u0300 */ 60450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u00C0\\u0300", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 605c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 606c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* A + 030A + 0301 */ 60850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u01FA", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 60950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "A\\u030A\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 610c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 611c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 61250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 61350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "A\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 614c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 61550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 61650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "A\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 617c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 618c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 61950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030AA", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 620c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 621c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 62250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 623c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 62450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 625c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 626c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* blocked accent */ 62850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "A\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 62950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u0301A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 630c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 631c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 63250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030A\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 63350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u01FA", "A\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 63450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FAA", "\\u0301A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 635c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 63650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FA", "\\u030A\\u0301", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 63750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u01FA", "A\\u030A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {1}}, 63850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u01FAA", "\\u0301A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 639c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 640c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 64150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F73", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 642c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 643c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 64450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F71", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 64550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F72", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 646c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 64750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F71", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 64850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F72", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 649c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 650c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 65150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73", "\\u0F71\\u0F72", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {1}}, 652c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 653c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 65450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0F73", "A\\u0F71", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 65550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73A", "\\u0F72A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 656c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru {"\\u01FA A\\u0301\\u030A A\\u030A\\u0301 A\\u030A \\u01FA", "A\\u030A", 65750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {10, -1}, {2}}, 658c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 65950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0F73", "A\\u0F71", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 66050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"\\u0F73A", "\\u0F72A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"\\u01FA A\\u0301\\u030A A\\u030A\\u0301 A\\u030A \\u01FA", "A\\u030A", 66250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 6, 10, 13, -1}, {1, 3, 2, 1}}, 663c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 664c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 66550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData MATCHCANONICAL[] = { 66950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"a busy bee is a very busy beeee", "bee", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {7, 26, -1}, {3, 3}}, 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /*012345678901234567890123456789012345678901234567890 */ 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"a busy bee is a very busy beeee with no bee life", "bee", NULL, 67350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {7, 26, 40, -1}, {3, 3, 3}}, 67450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData SUPPLEMENTARYCANONICAL[] = { 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /*012345678901234567890123456789012345678901234567890012345678901234567890123456789012345678901234567890012345678901234567890123456789 */ 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"abc \\uD800\\uDC00 \\uD800\\uDC01 \\uD801\\uDC00 \\uD800\\uDC00abc abc\\uD800\\uDC00 \\uD800\\uD800\\uDC00 \\uD800\\uDC00\\uDC00", 68050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "\\uD800\\uDC00", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {4, 13, 22, 26, 29, -1}, 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {2, 2, 2, 2, 2}}, 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and\\uD834\\uDDB9this sentence", "\\uD834\\uDDB9", NULL, 68350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {2}}, 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and \\uD834\\uDDB9 this sentence", " \\uD834\\uDDB9 ", NULL, 68550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {4}}, 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and-\\uD834\\uDDB9-this sentence", "-\\uD834\\uDDB9-", NULL, 68750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {4}}, 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and,\\uD834\\uDDB9,this sentence", ",\\uD834\\uDDB9,", NULL, 68950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {4}}, 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {"and?\\uD834\\uDDB9?this sentence", "?\\uD834\\uDDB9?", NULL, 69150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {3, -1}, {4}}, 69250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const SearchData CONTRACTIONCANONICAL[] = { 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* common discontiguous */ 697c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 69850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0300\\u0315", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 69950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0300\\u0315", "\\u0300\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 700c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 70150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0300\\u0315", "\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 70250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"A\\u0300\\u0315", "\\u0300\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 703c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 704c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* contraction prefix */ 70650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "A", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 707c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 708c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 70950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "AB", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 71050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 711c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 71250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "AB", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 71350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"AB\\u0315C", "\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {2, -1}, {1}}, 714c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 715c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* discontiguous problem here for backwards iteration. 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru forwards gives 0, 4 but backwards give 1, 3 */ 71850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /* {"X\\u0300\\u0319\\u0315", "\\u0319", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {4}}, */ 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* ends not with a contraction character */ 72250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0315\\u0300D", "\\u0300\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 72350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0315\\u0300D", "X\\u0300\\u0315", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {3}}, 724c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 725c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if GRAPHEME_BOUNDARIES 72650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0300\\u031A\\u0315D", "X\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 727c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* blocked discontiguous */ 72950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0300\\u031A\\u0315D", "\\u031A\\u0315D", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}}, 730c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 731c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* 732c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * "ab" generates a contraction that's an expansion. The "z" matches the 733c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * first CE of the expansion but the match fails because it ends in the 734c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * middle of an expansion... 735c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 73650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"ab", "z", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {2}}, 737c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#else 73850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0300\\u031A\\u0315D", "X\\u0300", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {4}}, 739c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 740c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /* blocked discontiguous */ 74150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"X\\u0300\\u031A\\u0315D", "\\u031A\\u0315D", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {4}}, 742c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 74350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {"ab", "z", NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, -1}, {2}}, 744c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 745c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 74650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 749c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Querustatic const SearchData DIACRITICMATCH[] = { 750b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho {"\\u03BA\\u03B1\\u03B9\\u0300\\u0020\\u03BA\\u03B1\\u1F76", "\\u03BA\\u03B1\\u03B9", NULL, UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {0, 5,-1}, {4, 3}}, 751b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho {"\\u0061\\u0061\\u00E1", "\\u0061\\u00E1", NULL, UCOL_SECONDARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, -1}, {2}}, 752b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho {"\\u0020\\u00C2\\u0303\\u0020\\u0041\\u0061\\u1EAA\\u0041\\u0302\\u0303\\u00C2\\u0303\\u1EAB\\u0061\\u0302\\u0303\\u00E2\\u0303\\uD806\\uDC01\\u0300\\u0020", 753b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "\\u00C2\\u0303", "LDE_AN_CX_EX_FX_HX_NX_S1", UCOL_PRIMARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {1, 4, 5, 6, 7, 10, 12, 13, 16,-1}, {2, 1, 1, 1, 3, 2, 1, 3, 2}}, 754b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho {NULL, NULL, NULL, UCOL_TERTIARY, USEARCH_STANDARD_ELEMENT_COMPARISON, NULL, {-1}, {0}} 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_COLLATION */ 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 760