【问题标题】:why tokenize texts in lucene?为什么要在 lucene 中标记文本?
【发布时间】:2015-04-05 12:13:23
【问题描述】:

我是 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”的String值

  • 案例标记化,“my”“name”“is”“lee”
  • 案例未标记化,“我的名字是 lee”

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

【问题讨论】:

    标签: lucene tokenize


    【解决方案1】:

    Lucene 的工作原理是在 documents 中找到满足 query 表达的约束条件的 tokens

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-02
      • 2013-02-20
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多