Umbraco Examine Search (Lucene.net) french accent
在项目中使用Umbraco examine search 来search 法语网站时,客户有一个需求,就是
当search expérience 和 experience 时,需要返回一样的结果。 类似这样的需求, 也就是说需要做accents search
解决方案:
我们需要重写Analyzer (Lucene.Net.Analysis.Analyzer) 中的 TokenStream方法
- using System.IO;
- using Lucene.Net.Analysis;
- using Lucene.Net.Analysis.Standard;
- namespace MyNamespace
- {
- public class CustomAnalyserService : Analyzer
- {
- public override TokenStream TokenStream(string fieldName, TextReader reader)
- {
- StandardTokenizer tokenizer = new StandardTokenizer(Lucene.Net.Util.Version.LUCENE_29, reader);
- tokenizer.SetMaxTokenLength();
- TokenStream stream = new StandardFilter(tokenizer);
- stream = new LowerCaseFilter(stream);
- return new ASCIIFoldingFilter(stream);
- }
- }
- }
同时修改Umbraco中Examine的配置文件
修改 ExamineSettings.config
Before
- <Examine RebuildOnAppStart="true">
- <ExamineIndexProviders>
- <providers>
- <!-- default external indexer, which excludes protected and unpublished pages-->
- <add name="ExternalIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
- analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" />
- </providers>
- </ExamineIndexProviders>
- <ExamineSearchProviders defaultProvider="ExternalSearcher">
- <providers>
- <add name="ExternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
- analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net" />
- </providers>
- </ExamineSearchProviders>
- </Examine>
After
- <Examine RebuildOnAppStart="true">
- <ExamineIndexProviders>
- <providers>
- <!-- default external indexer, which excludes protected and unpublished pages-->
- <add name="ExternalIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
- analyzer="MyNamespace.CustomAnalyserService, MyNamespace" />
- </providers>
- </ExamineIndexProviders>
- <ExamineSearchProviders defaultProvider="ExternalSearcher">
- <providers>
- <add name="ExternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
- analyzer="MyNamespace.CustomAnalyserService, MyNamespace" />
- </providers>
- </ExamineSearchProviders>
- </Examine>
The only change is the analyzer keyword, where you change it to your assmebly
- analyzer="[Namespace].[Class], [AssemblyWithoutDotDll]"
这样之后,ExternalSearcher 就既可以正常的搜索英语,也可以进行accent搜索法语网站 (eg: expérience 和 experience返回同样的结果)
如果有时候发现这样进行法语accent搜索还不行,怎么办
那就在search term这里下功夫,比如输入 expérience进行搜索,我们在这里就把它转换为experience,使用如下方法
- public static class SearchHelper
- {
- public static string FoldToASCII(char[] input, int length)
- {
- char[] output;
- int outputPos;
- int targetSize = * length;
- output = new char[ArrayUtil.GetNextSize(targetSize)];
- outputPos = ;
- for (int index = ; index < length; ++index)
- {
- char ch = input[index];
- if ((int)ch < )
- {
- output[outputPos++] = ch;
- }
- else
- {
- switch (ch)
- {
- case 'ff':
- output[outputPos++] = 'f';
- output[outputPos++] = 'f';
- continue;
- case 'fi':
- output[outputPos++] = 'f';
- output[outputPos++] = 'i';
- continue;
- case 'fl':
- output[outputPos++] = 'f';
- output[outputPos++] = 'l';
- continue;
- case 'ffi':
- output[outputPos++] = 'f';
- output[outputPos++] = 'f';
- output[outputPos++] = 'i';
- continue;
- case 'ffl':
- output[outputPos++] = 'f';
- output[outputPos++] = 'f';
- output[outputPos++] = 'l';
- continue;
- case 'st':
- output[outputPos++] = 's';
- output[outputPos++] = 't';
- continue;
- case '!':
- output[outputPos++] = '!';
- continue;
- case '"':
- case '❝':
- case '❞':
- case '❮':
- case '❯':
- case '″':
- case '‶':
- case '«':
- case '»':
- case '“':
- case '”':
- case '„':
- output[outputPos++] = '"';
- continue;
- case '#':
- output[outputPos++] = '#';
- continue;
- case '$':
- output[outputPos++] = '$';
- continue;
- case '%':
- case '⁒':
- output[outputPos++] = '%';
- continue;
- case '&':
- output[outputPos++] = '&';
- continue;
- case ''':
- case '❛':
- case '❜':
- case '′':
- case '‵':
- case '‹':
- case '›':
- case '‘':
- case '’':
- case '‚':
- case '‛':
- output[outputPos++] = '\'';
- continue;
- case '(':
- case '❨':
- case '❪':
- case '⁽':
- case '₍':
- output[outputPos++] = '(';
- continue;
- case ')':
- case '❩':
- case '❫':
- case '⁾':
- case '₎':
- output[outputPos++] = ')';
- continue;
- case '*':
- case '⁎':
- output[outputPos++] = '*';
- continue;
- case '+':
- case '⁺':
- case '₊':
- output[outputPos++] = '+';
- continue;
- case ',':
- output[outputPos++] = ',';
- continue;
- case '-':
- case '⁻':
- case '₋':
- case '‐':
- case '‑':
- case '‒':
- case '–':
- case '—':
- output[outputPos++] = '-';
- continue;
- case '.':
- output[outputPos++] = '.';
- continue;
- case '/':
- case '⁄':
- output[outputPos++] = '/';
- continue;
- case '0':
- case '\x2070':
- case '\x2080':
- case '\x24EA':
- case '\x24FF':
- output[outputPos++] = '';
- continue;
- case '1':
- case '\x2776':
- case '\x2780':
- case '\x278A':
- case '\x2081':
- case '\x2460':
- case '\x24F5':
- case '\x00B9':
- output[outputPos++] = '';
- continue;
- case '2':
- case '\x2777':
- case '\x2781':
- case '\x278B':
- case '\x2082':
- case '\x2461':
- case '\x24F6':
- case '\x00B2':
- output[outputPos++] = '';
- continue;
- case '3':
- case '\x2778':
- case '\x2782':
- case '\x278C':
- case '\x2083':
- case '\x2462':
- case '\x24F7':
- case '\x00B3':
- output[outputPos++] = '';
- continue;
- case '4':
- case '\x2779':
- case '\x2783':
- case '\x278D':
- case '\x2074':
- case '\x2084':
- case '\x2463':
- case '\x24F8':
- output[outputPos++] = '';
- continue;
- case '5':
- case '\x277A':
- case '\x2784':
- case '\x278E':
- case '\x2075':
- case '\x2085':
- case '\x2464':
- case '\x24F9':
- output[outputPos++] = '';
- continue;
- case '6':
- case '\x277B':
- case '\x2785':
- case '\x278F':
- case '\x2076':
- case '\x2086':
- case '\x2465':
- case '\x24FA':
- output[outputPos++] = '';
- continue;
- case '7':
- case '\x277C':
- case '\x2786':
- case '\x2790':
- case '\x2077':
- case '\x2087':
- case '\x2466':
- case '\x24FB':
- output[outputPos++] = '';
- continue;
- case '8':
- case '\x277D':
- case '\x2787':
- case '\x2791':
- case '\x2078':
- case '\x2088':
- case '\x2467':
- case '\x24FC':
- output[outputPos++] = '';
- continue;
- case '9':
- case '\x277E':
- case '\x2788':
- case '\x2792':
- case '\x2079':
- case '\x2089':
- case '\x2468':
- case '\x24FD':
- output[outputPos++] = '';
- continue;
- case ':':
- output[outputPos++] = ':';
- continue;
- case ';':
- case '⁏':
- output[outputPos++] = ';';
- continue;
- case '<':
- case '❬':
- case '❰':
- output[outputPos++] = '<';
- continue;
- case '=':
- case '⁼':
- case '₌':
- output[outputPos++] = '=';
- continue;
- case '>':
- case '❭':
- case '❱':
- output[outputPos++] = '>';
- continue;
- case '?':
- output[outputPos++] = '?';
- continue;
- case '@':
- output[outputPos++] = '@';
- continue;
- case 'A':
- case 'Ⓐ':
- case 'À':
- case 'Á':
- case 'Â':
- case 'Ã':
- case 'Ä':
- case 'Å':
- case 'Ā':
- case 'Ă':
- case 'Ą':
- case 'Ə':
- case 'Ǎ':
- case 'Ǟ':
- case 'Ǡ':
- case 'Ǻ':
- case 'Ȁ':
- case 'Ȃ':
- case 'Ȧ':
- case 'Ⱥ':
- case 'ᴀ':
- case 'Ḁ':
- case 'Ạ':
- case 'Ả':
- case 'Ấ':
- case 'Ầ':
- case 'Ẩ':
- case 'Ẫ':
- case 'Ậ':
- case 'Ắ':
- case 'Ằ':
- case 'Ẳ':
- case 'Ẵ':
- case 'Ặ':
- output[outputPos++] = 'A';
- continue;
- case 'B':
- case 'Ⓑ':
- case 'Ɓ':
- case 'Ƃ':
- case 'Ƀ':
- case 'ʙ':
- case 'ᴃ':
- case 'Ḃ':
- case 'Ḅ':
- case 'Ḇ':
- output[outputPos++] = 'B';
- continue;
- case 'C':
- case 'Ⓒ':
- case 'Ç':
- case 'Ć':
- case 'Ĉ':
- case 'Ċ':
- case 'Č':
- case 'Ƈ':
- case 'Ȼ':
- case 'ʗ':
- case 'ᴄ':
- case 'Ḉ':
- output[outputPos++] = 'C';
- continue;
- case 'D':
- case 'Ꝺ':
- case 'Ⓓ':
- case 'Ð':
- case 'Ď':
- case 'Đ':
- case 'Ɖ':
- case 'Ɗ':
- case 'Ƌ':
- case 'ᴅ':
- case 'ᴆ':
- case 'Ḋ':
- case 'Ḍ':
- case 'Ḏ':
- case 'Ḑ':
- case 'Ḓ':
- output[outputPos++] = 'D';
- continue;
- case 'E':
- case 'ⱻ':
- case 'Ⓔ':
- case 'È':
- case 'É':
- case 'Ê':
- case 'Ë':
- case 'Ē':
- case 'Ĕ':
- case 'Ė':
- case 'Ę':
- case 'Ě':
- case 'Ǝ':
- case 'Ɛ':
- case 'Ȅ':
- case 'Ȇ':
- case 'Ȩ':
- case 'Ɇ':
- case 'ᴇ':
- case 'Ḕ':
- case 'Ḗ':
- case 'Ḙ':
- case 'Ḛ':
- case 'Ḝ':
- case 'Ẹ':
- case 'Ẻ':
- case 'Ẽ':
- case 'Ế':
- case 'Ề':
- case 'Ể':
- case 'Ễ':
- case 'Ệ':
- output[outputPos++] = 'E';
- continue;
- case 'F':
- case 'ꜰ':
- case 'Ꝼ':
- case 'ꟻ':
- case 'Ⓕ':
- case 'Ƒ':
- case 'Ḟ':
- output[outputPos++] = 'F';
- continue;
- case 'G':
- case 'Ᵹ':
- case 'Ꝿ':
- case 'Ⓖ':
- case 'Ĝ':
- case 'Ğ':
- case 'Ġ':
- case 'Ģ':
- case 'Ɠ':
- case 'Ǥ':
- case 'ǥ':
- case 'Ǧ':
- case 'ǧ':
- case 'Ǵ':
- case 'ɢ':
- case 'ʛ':
- case 'Ḡ':
- output[outputPos++] = 'G';
- continue;
- case 'H':
- case 'Ⱨ':
- case 'Ⱶ':
- case 'Ⓗ':
- case 'Ĥ':
- case 'Ħ':
- case 'Ȟ':
- case 'ʜ':
- case 'Ḣ':
- case 'Ḥ':
- case 'Ḧ':
- case 'Ḩ':
- case 'Ḫ':
- output[outputPos++] = 'H';
- continue;
- case 'I':
- case 'ꟾ':
- case 'Ⓘ':
- case 'Ì':
- case 'Í':
- case 'Î':
- case 'Ï':
- case 'Ĩ':
- case 'Ī':
- case 'Ĭ':
- case 'Į':
- case 'İ':
- case 'Ɩ':
- case 'Ɨ':
- case 'Ǐ':
- case 'Ȉ':
- case 'Ȋ':
- case 'ɪ':
- case 'ᵻ':
- case 'Ḭ':
- case 'Ḯ':
- case 'Ỉ':
- case 'Ị':
- output[outputPos++] = 'I';
- continue;
- case 'J':
- case 'Ⓙ':
- case 'Ĵ':
- case 'Ɉ':
- case 'ᴊ':
- output[outputPos++] = 'J';
- continue;
- case 'K':
- case 'Ꝁ':
- case 'Ꝃ':
- case 'Ꝅ':
- case 'Ⱪ':
- case 'Ⓚ':
- case 'Ķ':
- case 'Ƙ':
- case 'Ǩ':
- case 'ᴋ':
- case 'Ḱ':
- case 'Ḳ':
- case 'Ḵ':
- output[outputPos++] = 'K';
- continue;
- case 'L':
- case 'Ꝇ':
- case 'Ꝉ':
- case 'Ꞁ':
- case 'Ⱡ':
- case 'Ɫ':
- case 'Ⓛ':
- case 'Ĺ':
- case 'Ļ':
- case 'Ľ':
- case 'Ŀ':
- case 'Ł':
- case 'Ƚ':
- case 'ʟ':
- case 'ᴌ':
- case 'Ḷ':
- case 'Ḹ':
- case 'Ḻ':
- case 'Ḽ':
- output[outputPos++] = 'L';
- continue;
- case 'M':
- case 'ꟽ':
- case 'ꟿ':
- case 'Ɱ':
- case 'Ⓜ':
- case 'Ɯ':
- case 'ᴍ':
- case 'Ḿ':
- case 'Ṁ':
- case 'Ṃ':
- output[outputPos++] = 'M';
- continue;
- case 'N':
- case 'Ⓝ':
- case 'Ñ':
- case 'Ń':
- case 'Ņ':
- case 'Ň':
- case 'Ŋ':
- case 'Ɲ':
- case 'Ǹ':
- case 'Ƞ':
- case 'ɴ':
- case 'ᴎ':
- case 'Ṅ':
- case 'Ṇ':
- case 'Ṉ':
- case 'Ṋ':
- output[outputPos++] = 'N';
- continue;
- case 'O':
- case 'Ꝋ':
- case 'Ꝍ':
- case 'Ⓞ':
- case 'Ò':
- case 'Ó':
- case 'Ô':
- case 'Õ':
- case 'Ö':
- case 'Ø':
- case 'Ō':
- case 'Ŏ':
- case 'Ő':
- case 'Ɔ':
- case 'Ɵ':
- case 'Ơ':
- case 'Ǒ':
- case 'Ǫ':
- case 'Ǭ':
- case 'Ǿ':
- case 'Ȍ':
- case 'Ȏ':
- case 'Ȫ':
- case 'Ȭ':
- case 'Ȯ':
- case 'Ȱ':
- case 'ᴏ':
- case 'ᴐ':
- case 'Ṍ':
- case 'Ṏ':
- case 'Ṑ':
- case 'Ṓ':
- case 'Ọ':
- case 'Ỏ':
- case 'Ố':
- case 'Ồ':
- case 'Ổ':
- case 'Ỗ':
- case 'Ộ':
- case 'Ớ':
- case 'Ờ':
- case 'Ở':
- case 'Ỡ':
- case 'Ợ':
- output[outputPos++] = 'O';
- continue;
- case 'P':
- case 'Ꝑ':
- case 'Ꝓ':
- case 'Ꝕ':
- case 'Ᵽ':
- case 'Ⓟ':
- case 'Ƥ':
- case 'ᴘ':
- case 'Ṕ':
- case 'Ṗ':
- output[outputPos++] = 'P';
- continue;
- case 'Q':
- case 'Ꝗ':
- case 'Ꝙ':
- case 'Ⓠ':
- case 'Ɋ':
- output[outputPos++] = 'Q';
- continue;
- case 'R':
- case 'Ꝛ':
- case 'Ꞃ':
- case 'Ɽ':
- case 'Ⓡ':
- case 'Ŕ':
- case 'Ŗ':
- case 'Ř':
- case 'Ȑ':
- case 'Ȓ':
- case 'Ɍ':
- case 'ʀ':
- case 'ʁ':
- case 'ᴙ':
- case 'ᴚ':
- case 'Ṙ':
- case 'Ṛ':
- case 'Ṝ':
- case 'Ṟ':
- output[outputPos++] = 'R';
- continue;
- case 'S':
- case 'ꜱ':
- case 'ꞅ':
- case 'Ⓢ':
- case 'Ś':
- case 'Ŝ':
- case 'Ş':
- case 'Š':
- case 'Ș':
- case 'Ṡ':
- case 'Ṣ':
- case 'Ṥ':
- case 'Ṧ':
- case 'Ṩ':
- output[outputPos++] = 'S';
- continue;
- case 'T':
- case 'Ꞇ':
- case 'Ⓣ':
- case 'Ţ':
- case 'Ť':
- case 'Ŧ':
- case 'Ƭ':
- case 'Ʈ':
- case 'Ț':
- case 'Ⱦ':
- case 'ᴛ':
- case 'Ṫ':
- case 'Ṭ':
- case 'Ṯ':
- case 'Ṱ':
- output[outputPos++] = 'T';
- continue;
- case 'U':
- case 'Ⓤ':
- case 'Ù':
- case 'Ú':
- case 'Û':
- case 'Ü':
- case 'Ũ':
- case 'Ū':
- case 'Ŭ':
- case 'Ů':
- case 'Ű':
- case 'Ų':
- case 'Ư':
- case 'Ǔ':
- case 'Ǖ':
- case 'Ǘ':
- case 'Ǚ':
- case 'Ǜ':
- case 'Ȕ':
- case 'Ȗ':
- case 'Ʉ':
- case 'ᴜ':
- case 'ᵾ':
- case 'Ṳ':
- case 'Ṵ':
- case 'Ṷ':
- case 'Ṹ':
- case 'Ṻ':
- case 'Ụ':
- case 'Ủ':
- case 'Ứ':
- case 'Ừ':
- case 'Ử':
- case 'Ữ':
- case 'Ự':
- output[outputPos++] = 'U';
- continue;
- case 'V':
- case 'Ꝟ':
- case 'Ꝩ':
- case 'Ⓥ':
- case 'Ʋ':
- case 'Ʌ':
- case 'ᴠ':
- case 'Ṽ':
- case 'Ṿ':
- case 'Ỽ':
- output[outputPos++] = 'V';
- continue;
- case 'W':
- case 'Ⱳ':
- case 'Ⓦ':
- case 'Ŵ':
- case 'Ƿ':
- case 'ᴡ':
- case 'Ẁ':
- case 'Ẃ':
- case 'Ẅ':
- case 'Ẇ':
- case 'Ẉ':
- output[outputPos++] = 'W';
- continue;
- case 'X':
- case 'Ⓧ':
- case 'Ẋ':
- case 'Ẍ':
- output[outputPos++] = 'X';
- continue;
- case 'Y':
- case 'Ⓨ':
- case 'Ý':
- case 'Ŷ':
- case 'Ÿ':
- case 'Ƴ':
- case 'Ȳ':
- case 'Ɏ':
- case 'ʏ':
- case 'Ẏ':
- case 'Ỳ':
- case 'Ỵ':
- case 'Ỷ':
- case 'Ỹ':
- case 'Ỿ':
- output[outputPos++] = 'Y';
- continue;
- case 'Z':
- case 'Ꝣ':
- case 'Ⱬ':
- case 'Ⓩ':
- case 'Ź':
- case 'Ż':
- case 'Ž':
- case 'Ƶ':
- case 'Ȝ':
- case 'Ȥ':
- case 'ᴢ':
- case 'Ẑ':
- case 'Ẓ':
- case 'Ẕ':
- output[outputPos++] = 'Z';
- continue;
- case '[':
- case '❲':
- case '⁅':
- output[outputPos++] = '[';
- continue;
- case '\':
- output[outputPos++] = '\\';
- continue;
- case ']':
- case '❳':
- case '⁆':
- output[outputPos++] = ']';
- continue;
- case '^':
- case '‸':
- output[outputPos++] = '^';
- continue;
- case '_':
- output[outputPos++] = '_';
- continue;
- case 'a':
- case 'ⱥ':
- case 'Ɐ':
- case 'ₐ':
- case 'ₔ':
- case 'ⓐ':
- case 'à':
- case 'á':
- case 'â':
- case 'ã':
- case 'ä':
- case 'å':
- case 'ā':
- case 'ă':
- case 'ą':
- case 'ǎ':
- case 'ǟ':
- case 'ǡ':
- case 'ǻ':
- case 'ȁ':
- case 'ȃ':
- case 'ȧ':
- case 'ɐ':
- case 'ə':
- case 'ɚ':
- case 'ᶏ':
- case 'ᶕ':
- case 'ḁ':
- case 'ẚ':
- case 'ạ':
- case 'ả':
- case 'ấ':
- case 'ầ':
- case 'ẩ':
- case 'ẫ':
- case 'ậ':
- case 'ắ':
- case 'ằ':
- case 'ẳ':
- case 'ẵ':
- case 'ặ':
- output[outputPos++] = 'a';
- continue;
- case 'b':
- case 'ⓑ':
- case 'ƀ':
- case 'ƃ':
- case 'ɓ':
- case 'ᵬ':
- case 'ᶀ':
- case 'ḃ':
- case 'ḅ':
- case 'ḇ':
- output[outputPos++] = 'b';
- continue;
- case 'c':
- case 'Ꜿ':
- case 'ꜿ':
- case 'ↄ':
- case 'ⓒ':
- case 'ç':
- case 'ć':
- case 'ĉ':
- case 'ċ':
- case 'č':
- case 'ƈ':
- case 'ȼ':
- case 'ɕ':
- case 'ḉ':
- output[outputPos++] = 'c';
- continue;
- case 'd':
- case 'ꝺ':
- case 'ⓓ':
- case 'ð':
- case 'ď':
- case 'đ':
- case 'ƌ':
- case 'ȡ':
- case 'ɖ':
- case 'ɗ':
- case 'ᵭ':
- case 'ᶁ':
- case 'ᶑ':
- case 'ḋ':
- case 'ḍ':
- case 'ḏ':
- case 'ḑ':
- case 'ḓ':
- output[outputPos++] = 'd';
- continue;
- case 'e':
- case 'ⱸ':
- case 'ₑ':
- case 'ⓔ':
- case 'è':
- case 'é':
- case 'ê':
- case 'ë':
- case 'ē':
- case 'ĕ':
- case 'ė':
- case 'ę':
- case 'ě':
- case 'ǝ':
- case 'ȅ':
- case 'ȇ':
- case 'ȩ':
- case 'ɇ':
- case 'ɘ':
- case 'ɛ':
- case 'ɜ':
- case 'ɝ':
- case 'ɞ':
- case 'ʚ':
- case 'ᴈ':
- case 'ᶒ':
- case 'ᶓ':
- case 'ᶔ':
- case 'ḕ':
- case 'ḗ':
- case 'ḙ':
- case 'ḛ':
- case 'ḝ':
- case 'ẹ':
- case 'ẻ':
- case 'ẽ':
- case 'ế':
- case 'ề':
- case 'ể':
- case 'ễ':
- case 'ệ':
- output[outputPos++] = 'e';
- continue;
- case 'f':
- case 'ꝼ':
- case 'ⓕ':
- case 'ƒ':
- case 'ᵮ':
- case 'ᶂ':
- case 'ḟ':
- case 'ẛ':
- output[outputPos++] = 'f';
- continue;
- case 'g':
- case 'ꝿ':
- case 'ⓖ':
- case 'ĝ':
- case 'ğ':
- case 'ġ':
- case 'ģ':
- case 'ǵ':
- case 'ɠ':
- case 'ɡ':
- case 'ᵷ':
- case 'ᵹ':
- case 'ᶃ':
- case 'ḡ':
- output[outputPos++] = 'g';
- continue;
- case 'h':
- case 'ⱨ':
- case 'ⱶ':
- case 'ⓗ':
- case 'ĥ':
- case 'ħ':
- case 'ȟ':
- case 'ɥ':
- case 'ɦ':
- case 'ʮ':
- case 'ʯ':
- case 'ḣ':
- case 'ḥ':
- case 'ḧ':
- case 'ḩ':
- case 'ḫ':
- case 'ẖ':
- output[outputPos++] = 'h';
- continue;
- case 'i':
- case 'ⁱ':
- case 'ⓘ':
- case 'ì':
- case 'í':
- case 'î':
- case 'ï':
- case 'ĩ':
- case 'ī':
- case 'ĭ':
- case 'į':
- case 'ı':
- case 'ǐ':
- case 'ȉ':
- case 'ȋ':
- case 'ɨ':
- case 'ᴉ':
- case 'ᵢ':
- case 'ᵼ':
- case 'ᶖ':
- case 'ḭ':
- case 'ḯ':
- case 'ỉ':
- case 'ị':
- output[outputPos++] = 'i';
- continue;
- case 'j':
- case 'ⱼ':
- case 'ⓙ':
- case 'ĵ':
- case 'ǰ':
- case 'ȷ':
- case 'ɉ':
- case 'ɟ':
- case 'ʄ':
- case 'ʝ':
- output[outputPos++] = 'j';
- continue;
- case 'k':
- case 'ꝁ':
- case 'ꝃ':
- case 'ꝅ':
- case 'ⱪ':
- case 'ⓚ':
- case 'ķ':
- case 'ƙ':
- case 'ǩ':
- case 'ʞ':
- case 'ᶄ':
- case 'ḱ':
- case 'ḳ':
- case 'ḵ':
- output[outputPos++] = 'k';
- continue;
- case 'l':
- case 'ꝇ':
- case 'ꝉ':
- case 'ꞁ':
- case 'ⱡ':
- case 'ⓛ':
- case 'ĺ':
- case 'ļ':
- case 'ľ':
- case 'ŀ':
- case 'ł':
- case 'ƚ':
- case 'ȴ':
- case 'ɫ':
- case 'ɬ':
- case 'ɭ':
- case 'ᶅ':
- case 'ḷ':
- case 'ḹ':
- case 'ḻ':
- case 'ḽ':
- output[outputPos++] = 'l';
- continue;
- case 'm':
- case 'ⓜ':
- case 'ɯ':
- case 'ɰ':
- case 'ɱ':
- case 'ᵯ':
- case 'ᶆ':
- case 'ḿ':
- case 'ṁ':
- case 'ṃ':
- output[outputPos++] = 'm';
- continue;
- case 'n':
- case 'ⁿ':
- case 'ⓝ':
- case 'ñ':
- case 'ń':
- case 'ņ':
- case 'ň':
- case 'ʼn':
- case 'ŋ':
- case 'ƞ':
- case 'ǹ':
- case 'ȵ':
- case 'ɲ':
- case 'ɳ':
- case 'ᵰ':
- case 'ᶇ':
- case 'ṅ':
- case 'ṇ':
- case 'ṉ':
- case 'ṋ':
- output[outputPos++] = 'n';
- continue;
- case 'o':
- case 'ꝋ':
- case 'ꝍ':
- case 'ⱺ':
- case 'ₒ':
- case 'ⓞ':
- case 'ò':
- case 'ó':
- case 'ô':
- case 'õ':
- case 'ö':
- case 'ø':
- case 'ō':
- case 'ŏ':
- case 'ő':
- case 'ơ':
- case 'ǒ':
- case 'ǫ':
- case 'ǭ':
- case 'ǿ':
- case 'ȍ':
- case 'ȏ':
- case 'ȫ':
- case 'ȭ':
- case 'ȯ':
- case 'ȱ':
- case 'ɔ':
- case 'ɵ':
- case 'ᴖ':
- case 'ᴗ':
- case 'ᶗ':
- case 'ṍ':
- case 'ṏ':
- case 'ṑ':
- case 'ṓ':
- case 'ọ':
- case 'ỏ':
- case 'ố':
- case 'ồ':
- case 'ổ':
- case 'ỗ':
- case 'ộ':
- case 'ớ':
- case 'ờ':
- case 'ở':
- case 'ỡ':
- case 'ợ':
- output[outputPos++] = 'o';
- continue;
- case 'p':
- case 'ꝑ':
- case 'ꝓ':
- case 'ꝕ':
- case 'ꟼ':
- case 'ⓟ':
- case 'ƥ':
- case 'ᵱ':
- case 'ᵽ':
- case 'ᶈ':
- case 'ṕ':
- case 'ṗ':
- output[outputPos++] = 'p';
- continue;
- case 'q':
- case 'ꝗ':
- case 'ꝙ':
- case 'ⓠ':
- case 'ĸ':
- case 'ɋ':
- case 'ʠ':
- output[outputPos++] = 'q';
- continue;
- case 'r':
- case 'ꝛ':
- case 'ꞃ':
- case 'ⓡ':
- case 'ŕ':
- case 'ŗ':
- case 'ř':
- case 'ȑ':
- case 'ȓ':
- case 'ɍ':
- case 'ɼ':
- case 'ɽ':
- case 'ɾ':
- case 'ɿ':
- case 'ᵣ':
- case 'ᵲ':
- case 'ᵳ':
- case 'ᶉ':
- case 'ṙ':
- case 'ṛ':
- case 'ṝ':
- case 'ṟ':
- output[outputPos++] = 'r';
- continue;
- case 's':
- case 'Ꞅ':
- case 'ⓢ':
- case 'ś':
- case 'ŝ':
- case 'ş':
- case 'š':
- case 'ſ':
- case 'ș':
- case 'ȿ':
- case 'ʂ':
- case 'ᵴ':
- case 'ᶊ':
- case 'ṡ':
- case 'ṣ':
- case 'ṥ':
- case 'ṧ':
- case 'ṩ':
- case 'ẜ':
- case 'ẝ':
- output[outputPos++] = 's';
- continue;
- case 't':
- case 'ⱦ':
- case 'ⓣ':
- case 'ţ':
- case 'ť':
- case 'ŧ':
- case 'ƫ':
- case 'ƭ':
- case 'ț':
- case 'ȶ':
- case 'ʇ':
- case 'ʈ':
- case 'ᵵ':
- case 'ṫ':
- case 'ṭ':
- case 'ṯ':
- case 'ṱ':
- case 'ẗ':
- output[outputPos++] = 't';
- continue;
- case 'u':
- case 'ⓤ':
- case 'ù':
- case 'ú':
- case 'û':
- case 'ü':
- case 'ũ':
- case 'ū':
- case 'ŭ':
- case 'ů':
- case 'ű':
- case 'ų':
- case 'ư':
- case 'ǔ':
- case 'ǖ':
- case 'ǘ':
- case 'ǚ':
- case 'ǜ':
- case 'ȕ':
- case 'ȗ':
- case 'ʉ':
- case 'ᵤ':
- case 'ᶙ':
- case 'ṳ':
- case 'ṵ':
- case 'ṷ':
- case 'ṹ':
- case 'ṻ':
- case 'ụ':
- case 'ủ':
- case 'ứ':
- case 'ừ':
- case 'ử':
- case 'ữ':
- case 'ự':
- output[outputPos++] = 'u';
- continue;
- case 'v':
- case 'ꝟ':
- case 'ⱱ':
- case 'ⱴ':
- case 'ⓥ':
- case 'ʋ':
- case 'ʌ':
- case 'ᵥ':
- case 'ᶌ':
- case 'ṽ':
- case 'ṿ':
- output[outputPos++] = 'v';
- continue;
- case 'w':
- case 'ⱳ':
- case 'ⓦ':
- case 'ŵ':
- case 'ƿ':
- case 'ʍ':
- case 'ẁ':
- case 'ẃ':
- case 'ẅ':
- case 'ẇ':
- case 'ẉ':
- case 'ẘ':
- output[outputPos++] = 'w';
- continue;
- case 'x':
- case 'ₓ':
- case 'ⓧ':
- case 'ᶍ':
- case 'ẋ':
- case 'ẍ':
- output[outputPos++] = 'x';
- continue;
- case 'y':
- case 'ⓨ':
- case 'ý':
- case 'ÿ':
- case 'ŷ':
- case 'ƴ':
- case 'ȳ':
- case 'ɏ':
- case 'ʎ':
- case 'ẏ':
- case 'ẙ':
- case 'ỳ':
- case 'ỵ':
- case 'ỷ':
- case 'ỹ':
- case 'ỿ':
- output[outputPos++] = 'y';
- continue;
- case 'z':
- case 'ꝣ':
- case 'ⱬ':
- case 'ⓩ':
- case 'ź':
- case 'ż':
- case 'ž':
- case 'ƶ':
- case 'ȝ':
- case 'ȥ':
- case 'ɀ':
- case 'ʐ':
- case 'ʑ':
- case 'ᵶ':
- case 'ᶎ':
- case 'ẑ':
- case 'ẓ':
- case 'ẕ':
- output[outputPos++] = 'z';
- continue;
- case '{':
- case '❴':
- output[outputPos++] = '{';
- continue;
- case '}':
- case '❵':
- output[outputPos++] = '}';
- continue;
- case '~':
- case '⁓':
- output[outputPos++] = '~';
- continue;
- case 'Ꜩ':
- output[outputPos++] = 'T';
- output[outputPos++] = 'Z';
- continue;
- case 'ꜩ':
- output[outputPos++] = 't';
- output[outputPos++] = 'z';
- continue;
- case 'Ꜳ':
- output[outputPos++] = 'A';
- output[outputPos++] = 'A';
- continue;
- case 'ꜳ':
- output[outputPos++] = 'a';
- output[outputPos++] = 'a';
- continue;
- case 'Ꜵ':
- output[outputPos++] = 'A';
- output[outputPos++] = 'O';
- continue;
- case 'ꜵ':
- output[outputPos++] = 'a';
- output[outputPos++] = 'o';
- continue;
- case 'Ꜷ':
- output[outputPos++] = 'A';
- output[outputPos++] = 'U';
- continue;
- case 'ꜷ':
- output[outputPos++] = 'a';
- output[outputPos++] = 'u';
- continue;
- case 'Ꜹ':
- case 'Ꜻ':
- output[outputPos++] = 'A';
- output[outputPos++] = 'V';
- continue;
- case 'ꜹ':
- case 'ꜻ':
- output[outputPos++] = 'a';
- output[outputPos++] = 'v';
- continue;
- case 'Ꜽ':
- output[outputPos++] = 'A';
- output[outputPos++] = 'Y';
- continue;
- case 'ꜽ':
- output[outputPos++] = 'a';
- output[outputPos++] = 'y';
- continue;
- case 'Ꝏ':
- output[outputPos++] = 'O';
- output[outputPos++] = 'O';
- continue;
- case 'ꝏ':
- output[outputPos++] = 'o';
- output[outputPos++] = 'o';
- continue;
- case 'Ꝡ':
- output[outputPos++] = 'V';
- output[outputPos++] = 'Y';
- continue;
- case 'ꝡ':
- output[outputPos++] = 'v';
- output[outputPos++] = 'y';
- continue;
- case 'Ꝧ':
- case 'Þ':
- output[outputPos++] = 'T';
- output[outputPos++] = 'H';
- continue;
- case 'ꝧ':
- case 'þ':
- case 'ᵺ':
- output[outputPos++] = 't';
- output[outputPos++] = 'h';
- continue;
- case '\x277F':
- case '\x2789':
- case '\x2793':
- case '\x2469':
- case '\x24FE':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '⸨':
- output[outputPos++] = '(';
- output[outputPos++] = '(';
- continue;
- case '⸩':
- output[outputPos++] = ')';
- output[outputPos++] = ')';
- continue;
- case '‼':
- output[outputPos++] = '!';
- output[outputPos++] = '!';
- continue;
- case '⁇':
- output[outputPos++] = '?';
- output[outputPos++] = '?';
- continue;
- case '⁈':
- output[outputPos++] = '?';
- output[outputPos++] = '!';
- continue;
- case '⁉':
- output[outputPos++] = '!';
- output[outputPos++] = '?';
- continue;
- case '\x246A':
- case '\x24EB':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x246B':
- case '\x24EC':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x246C':
- case '\x24ED':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x246D':
- case '\x24EE':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x246E':
- case '\x24EF':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x246F':
- case '\x24F0':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x2470':
- case '\x24F1':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x2471':
- case '\x24F2':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x2472':
- case '\x24F3':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x2473':
- case '\x24F4':
- output[outputPos++] = '';
- output[outputPos++] = '';
- continue;
- case '\x2474':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2475':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2476':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2477':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2478':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2479':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x247A':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x247B':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x247C':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x247D':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x247E':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x247F':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2480':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2481':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2482':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2483':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2484':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2485':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2486':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2487':
- output[outputPos++] = '(';
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = ')';
- continue;
- case '\x2488':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2489':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x248A':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x248B':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x248C':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x248D':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x248E':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x248F':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2490':
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2491':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2492':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2493':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2494':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2495':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2496':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2497':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2498':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x2499':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x249A':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '\x249B':
- output[outputPos++] = '';
- output[outputPos++] = '';
- output[outputPos++] = '.';
- continue;
- case '⒜':
- output[outputPos++] = '(';
- output[outputPos++] = 'a';
- output[outputPos++] = ')';
- continue;
- case '⒝':
- output[outputPos++] = '(';
- output[outputPos++] = 'b';
- output[outputPos++] = ')';
- continue;
- case '⒞':
- output[outputPos++] = '(';
- output[outputPos++] = 'c';
- output[outputPos++] = ')';
- continue;
- case '⒟':
- output[outputPos++] = '(';
- output[outputPos++] = 'd';
- output[outputPos++] = ')';
- continue;
- case '⒠':
- output[outputPos++] = '(';
- output[outputPos++] = 'e';
- output[outputPos++] = ')';
- continue;
- case '⒡':
- output[outputPos++] = '(';
- output[outputPos++] = 'f';
- output[outputPos++] = ')';
- continue;
- case '⒢':
- output[outputPos++] = '(';
- output[outputPos++] = 'g';
- output[outputPos++] = ')';
- continue;
- case '⒣':
- output[outputPos++] = '(';
- output[outputPos++] = 'h';
- output[outputPos++] = ')';
- continue;
- case '⒤':
- output[outputPos++] = '(';
- output[outputPos++] = 'i';
- output[outputPos++] = ')';
- continue;
- case '⒥':
- output[outputPos++] = '(';
- output[outputPos++] = 'j';
- output[outputPos++] = ')';
- continue;
- case '⒦':
- output[outputPos++] = '(';
- output[outputPos++] = 'k';
- output[outputPos++] = ')';
- continue;
- case '⒧':
- output[outputPos++] = '(';
- output[outputPos++] = 'l';
- output[outputPos++] = ')';
- continue;
- case '⒨':
- output[outputPos++] = '(';
- output[outputPos++] = 'm';
- output[outputPos++] = ')';
- continue;
- case '⒩':
- output[outputPos++] = '(';
- output[outputPos++] = 'n';
- output[outputPos++] = ')';
- continue;
- case '⒪':
- output[outputPos++] = '(';
- output[outputPos++] = 'o';
- output[outputPos++] = ')';
- continue;
- case '⒫':
- output[outputPos++] = '(';
- output[outputPos++] = 'p';
- output[outputPos++] = ')';
- continue;
- case '⒬':
- output[outputPos++] = '(';
- output[outputPos++] = 'q';
- output[outputPos++] = ')';
- continue;
- case '⒭':
- output[outputPos++] = '(';
- output[outputPos++] = 'r';
- output[outputPos++] = ')';
- continue;
- case '⒮':
- output[outputPos++] = '(';
- output[outputPos++] = 's';
- output[outputPos++] = ')';
- continue;
- case '⒯':
- output[outputPos++] = '(';
- output[outputPos++] = 't';
- output[outputPos++] = ')';
- continue;
- case '⒰':
- output[outputPos++] = '(';
- output[outputPos++] = 'u';
- output[outputPos++] = ')';
- continue;
- case '⒱':
- output[outputPos++] = '(';
- output[outputPos++] = 'v';
- output[outputPos++] = ')';
- continue;
- case '⒲':
- output[outputPos++] = '(';
- output[outputPos++] = 'w';
- output[outputPos++] = ')';
- continue;
- case '⒳':
- output[outputPos++] = '(';
- output[outputPos++] = 'x';
- output[outputPos++] = ')';
- continue;
- case '⒴':
- output[outputPos++] = '(';
- output[outputPos++] = 'y';
- output[outputPos++] = ')';
- continue;
- case '⒵':
- output[outputPos++] = '(';
- output[outputPos++] = 'z';
- output[outputPos++] = ')';
- continue;
- case 'Æ':
- case 'Ǣ':
- case 'Ǽ':
- case 'ᴁ':
- output[outputPos++] = 'A';
- output[outputPos++] = 'E';
- continue;
- case 'ß':
- output[outputPos++] = 's';
- output[outputPos++] = 's';
- continue;
- case 'æ':
- case 'ǣ':
- case 'ǽ':
- case 'ᴂ':
- output[outputPos++] = 'a';
- output[outputPos++] = 'e';
- continue;
- case 'IJ':
- output[outputPos++] = 'I';
- output[outputPos++] = 'J';
- continue;
- case 'ij':
- output[outputPos++] = 'i';
- output[outputPos++] = 'j';
- continue;
- case 'Œ':
- case 'ɶ':
- output[outputPos++] = 'O';
- output[outputPos++] = 'E';
- continue;
- case 'œ':
- case 'ᴔ':
- output[outputPos++] = 'o';
- output[outputPos++] = 'e';
- continue;
- case 'ƕ':
- output[outputPos++] = 'h';
- output[outputPos++] = 'v';
- continue;
- case 'DŽ':
- case 'DZ':
- output[outputPos++] = 'D';
- output[outputPos++] = 'Z';
- continue;
- case 'Dž':
- case 'Dz':
- output[outputPos++] = 'D';
- output[outputPos++] = 'z';
- continue;
- case 'dž':
- case 'dz':
- case 'ʣ':
- case 'ʥ':
- output[outputPos++] = 'd';
- output[outputPos++] = 'z';
- continue;
- case 'LJ':
- output[outputPos++] = 'L';
- output[outputPos++] = 'J';
- continue;
- case 'Lj':
- output[outputPos++] = 'L';
- output[outputPos++] = 'j';
- continue;
- case 'lj':
- output[outputPos++] = 'l';
- output[outputPos++] = 'j';
- continue;
- case 'NJ':
- output[outputPos++] = 'N';
- output[outputPos++] = 'J';
- continue;
- case 'Nj':
- output[outputPos++] = 'N';
- output[outputPos++] = 'j';
- continue;
- case 'nj':
- output[outputPos++] = 'n';
- output[outputPos++] = 'j';
- continue;
- case 'Ƕ':
- output[outputPos++] = 'H';
- output[outputPos++] = 'V';
- continue;
- case 'Ȣ':
- case 'ᴕ':
- output[outputPos++] = 'O';
- output[outputPos++] = 'U';
- continue;
- case 'ȣ':
- output[outputPos++] = 'o';
- output[outputPos++] = 'u';
- continue;
- case 'ȸ':
- output[outputPos++] = 'd';
- output[outputPos++] = 'b';
- continue;
- case 'ȹ':
- output[outputPos++] = 'q';
- output[outputPos++] = 'p';
- continue;
- case 'ʦ':
- output[outputPos++] = 't';
- output[outputPos++] = 's';
- continue;
- case 'ʨ':
- output[outputPos++] = 't';
- output[outputPos++] = 'c';
- continue;
- case 'ʪ':
- output[outputPos++] = 'l';
- output[outputPos++] = 's';
- continue;
- case 'ʫ':
- output[outputPos++] = 'l';
- output[outputPos++] = 'z';
- continue;
- case 'ᵫ':
- output[outputPos++] = 'u';
- output[outputPos++] = 'e';
- continue;
- case 'ẞ':
- output[outputPos++] = 'S';
- output[outputPos++] = 'S';
- continue;
- case 'Ỻ':
- output[outputPos++] = 'L';
- output[outputPos++] = 'L';
- continue;
- case 'ỻ':
- output[outputPos++] = 'l';
- output[outputPos++] = 'l';
- continue;
- default:
- output[outputPos++] = ch;
- continue;
- }
- }
- }
- return new string(output).Trim('\0');
- }
- }
另外,我们在把新修改后的ExamineSettings.config 发布到web server后,需要rebuild index 去使它工作。
但是,在我们的web server上,我们并没有Umbraco back office, 我们把back office删除了. 如何rebuild index 呢
方法是把 App_Data\TEMP\ExamineIndexes\machinename\ 中的 External 文件夹删除。然后在IIS 中的App pool重新启动这个网站
然后再测试,应该就可以了
Umbraco Examine Search (Lucene.net) french accent的更多相关文章
- Umbraco examine search media folder 中的pdf文件
可以参考的文章 http://sleslie.me/2015/selecting-media-using-razor-slow-performance-examine-to-the-rescue/ h ...
- Umbraco Examine 实现Fuzzy search
在Umbraco examine search项目开发中,有一个需求, 就是intercom 和 intercoms需要返回同样的结果 也就是说 搜索intercom 时, 能返回包含intercom ...
- Umbraco中的Examine Search功能讲解
转载原地址: http://24days.in/umbraco/2013/getting-started-with-examine/ Everytime I read the word Examine ...
- Lucene学习总结:全文检索的基本原理
一.总论 根据http://lucene.apache.org/java/docs/index.html定义: Lucene是一个高效的,基于Java的全文检索库. 所以在了解Lucene之前要费一番 ...
- Lucene学习笔记:一,全文检索的基本原理
一.总论 根据http://lucene.apache.org/java/docs/index.html定义: Lucene是一个高效的,基于Java的全文检索库. 所以在了解Lucene之前要费一番 ...
- Lucene:信息检索与全文检索
目录 信息检索的概念 信息检索技术的分类 全文检索与数据库查询对比 全文检索工具一般由三部分构成 全文检索中建立索引和进行检索的流程 索引里面究竟存什么 如何创建索引 如何对索引进行检索 Lucene ...
- Lucene学习总结之一:全文检索的基本原理
一.总论 根据http://lucene.apache.org/java/docs/index.html 定义: Lucene 是一个高效的,基于Java 的全文检索库. 所以在了解Lucene之前要 ...
- Lucene原理一
Lucene 是一个高效的,基于Java 的全文检索库. 所以在了解Lucene之前要费一番工夫了解一下全文检索. 那么什么叫做全文检索呢?这要从我们生活中的数据说起. 我们生活中的数据总体分为两种: ...
- Lucene全文检索技术学习
---------------------------------------------------------------------------------------------------- ...
随机推荐
- nginx gzip 压缩设置
mime.types 中包含所有文件的类型,不知道的可以去里面查询 gzip配置的常用参数 gzip on|off; #是否开启gzip gzip_buffers 32 4K| 16 8K #缓冲( ...
- 恢复delete删除的数据
SELECT * FROM tablename AS OF TIMESTAMP TO_TIMESTAMP('2010-12-15 11:10:17', 'YYYY-MM-DD HH:MI:SS')
- 从HTTP请求中获取客户IP地址
/** * 从HTTP请求中获取客户IP地址 * * @param request http请求 * @return 客户IP地址 */ public s ...
- WEB安全之Token浅谈
Token一般用在两个地方——防止表单重复提交.anti csrf攻击(跨站点请求伪造). 两者在原理上都是通过session token来实现的.当客户端请求页面时,服务器会生成一个随机数Token ...
- 具有增、删、改、查功能的vue-tree树组件
最近写了一个具有增删改查功能的多级树组件,感觉很实用,啦啦啦啦, 废话不多说,看代码: tree.vue <template> <div> <div class=&quo ...
- linux命令学习笔记(0):man命令
Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可. Linux的man手册共有以下几个章节: 代號 代表內容 使用者在shell中可以操作的指令或可执行 ...
- Hexo 版本
Mac hexo s 启动Hexo服务报错如下: Error: The module '/usr/local/lib/node_modules/hexo-cli/node_modules/.0.8.0 ...
- ffmpeg编码h264只包含I帧P帧的方法
ffmpeg使用avcodc_encode_video编码,默认产生的h264包含B帧,在安防行业很多地方是不需要用到B帧的. 1.基础知识充电 这就涉及到h264的各种profile格式了,参考 h ...
- yarn 官方配置推荐
http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.4/bk_installing_manually_book/content/rpm-chap ...
- NOIP2018爆炸记
又是一年\(NOIP\),可能是梦结束的地方? 之所以咕了这么久是得先确定自己不会退役,因为分太低了. 和去年一样在学校门前照了相,然后上车走了.高三回来考的只剩下\(p2oileen\)学姐了.新一 ...