为什么要在 lucene 中标记文本?

why tokenize texts in lucene?

我是lucene的初学者。这是我的来源:

ft = new FieldType(StringField.TYPE_STORED);
    ft.setTokenized(false);
    ft.setStored(true);
    ftNA = new FieldType(StringField.TYPE_STORED);
    ftNA.setTokenized(true);
    ftNA.setStored(true);

为什么要在 lucene 中标记化?例如:"my name is lee"

的字符串值

我不明白为什么要通过标记化进行索引。标记化和未标记化有什么区别?

Lucene 通过在 文档 中找到满足 查询 表达的约束的 标记 来工作。

例如,如果您搜索 lee,查询将查找包含 令牌 lee 的所有文档。如果该字段未标记化,您将只能找到 my name is lee,而不仅仅是 lee。例如

现在假设您搜索 "is lee"。这是一个 PhraseQuery,这意味着它将匹配标记 is 后跟标记 lee.

需要标记化,因为 Lucene 使用 倒排索引 ,即将 标记 映射到 文档 包含它们。