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

时间:2015-04-05 12:13:24

标签: lucene tokenize

我是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中被标记化?例如:“我的名字是lee”的字符串值

  • case tokenized,“my”“name”“is”“lee”
  • 案件未标记,“我的名字是李”

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

1 个答案:

答案 0 :(得分:1)

Lucene通过在文档中查找令牌来满足查询所表达的约束。

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

现在假设您搜索"is lee"。这是PhraseQuery,这意味着它会匹配令牌is,后跟令牌lee

需要进行标记化,因为Lucene使用反向索引,即它将标记映射到包含它们的文档