【问题标题】:Tokenizing hashtags in Lucene.Net在 Lucene.Net 中标记主题标签
【发布时间】:2011-08-05 08:31:46
【问题描述】:

我正在使用 Lucene.Net(2.9 版)。我想保留推文帖子“@name”或“#Note”。

使用 Lucene AnalyzerViewer 工具 (http://www.codeproject.com/KB/cs/lucene_analysis.aspx?msg=3326095#xx3326095xx) 查看不同分析器生成的令牌。

例如,从以下文本产生的标记:“#Note: Excercise, to live longer.”

  • 空白分析器:[#Note:] [Excercise,] [to] [live] [longer.]
  • 标准分析器:[note] [excercise] [live] [longer]
  • 简单分析器:[note] [excercise] [to] [live] [longer]

'Whitespace Analyzer' 保留哈希标签。我创建了一个自定义分析器,它使用 WhitespaceTokenizer 和小写。

自定义分析器代码...

public class CustomAnalyzer : Analyzer
{
    public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
    {
        TokenStream result = new Lucene.Net.Analysis.WhitespaceTokenizer(reader);

        // Makes sure everything is lower case
        result = new LowerCaseFilter(result);

        //Return the built token stream.)
        return result;
    }
}

但是,自定义分析器会留下标点符号。自定义分析器生成的令牌:[#note:] [excercise,] [to] [live] [longer.]

对于使用保留“#”、“@”标签并删除标点符号的过滤器有什么建议吗?

提前致谢。

【问题讨论】:

    标签: lucene lucene.net analyzer


    【解决方案1】:

    在 lucene 的 java 版本中,有一个 PatternAnalyzer,它可以让您指定用于拆分标记的模式。

    文档:http://lucene.apache.org/java/2_9_4/api/contrib-memory/org/apache/lucene/index/memory/PatternAnalyzer.html

    您可以留意此分析器的 .net 版本或将其移植到您自己的版本中。

    【讨论】:

    • 感谢您的建议。将密切关注 PatternAnalyzer 的 .Net 端口。与此同时,我们正在考虑提取推文帖子(即“@name”、“#Note”等)并将其存储在单独的 Lucene 字段中并使用 Whitespace Analyzer 的解决方法。
    • 不客气!如果还不存在,我建议您将自己的端口写入 .net。只需几行代码;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2012-01-26
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    相关资源
    最近更新 更多