我正在尝试找到有关字符串分析器如何工作的文档,更具体地说,在构建索引的术语数组时,他们会解析哪些字符?
以下是一个例子:
如果我要将包含email
字段且值为"test@hotmail.com"
的文档编入索引,那么如果给出"test"
或"hotmail.com"
,匹配查询将返回此文档作为查询。这表明分析器解析@
个字符,但不解析.
个字符。
我想更多地了解其他字符被视为普通字符,哪些字符被完全删除,以及哪些字符被解析?
有没有人知道我可以在哪里找到这些信息?
答案 0 :(得分:1)
如您的第二个链接所述,分析字符串时启动的默认分析器是standard analyzer,它使用standard tokenizer。
如果您检查最后一个链接,您会看到标准标记器强制执行Unicode Standard Annex #29的标记化规则。
在该文档中,有一个名为4 Word Boundaries的部分和另一个名为5 Sentence Boundaries的部分,它根据这些不同的规则并依赖于许多不同的Unicode序列来确切地定义了哪个字符和何时分割令牌(也取决于正在分析哪种语言。)
例如,句点.
字符仅被视为句子边界,如果它直接后跟空格(电子邮件中不是这种情况)。