【问题标题】:Finding relevant keyword from a webpage从网页中查找相关关键字
【发布时间】:2011-06-08 08:02:04
【问题描述】:
  • 另一方面,我有一个提供一组关键字的 Java CMS
  • 另一方面,我有一个 JavaScript 书签来管理网页

有没有一种巧妙的方法可以将我的关键字集与网页内容交叉/匹配?

John Resign 解释了in some articles 如何压缩然后在字典中搜索,但这似乎真的很复杂。

事实上,我正在寻找一种聪明的 Java 或 JavaScript 算法来有效地匹配文本中的一组字符串。

我的问题非常接近这个问题: Effective search on a small text

但是,

  • 我想在 1 个文本而不是文本数据库上执行此操作
  • 使用 lucene 建立索引效果很好,但我不知道如何将有效索引的术语与我的所有关键字进行匹配。

【问题讨论】:

    标签: java javascript search lucene


    【解决方案1】:

    你可以像这样使用java:

    Set<String> keywords = new TreeSet<String>(Arrays.asList("keyword1", "keyword2"));
    String content = "your doc here with keyword1 etc";
    Set<String> contentWords = new TreeSet<String>(Arrays.asList(content.split(" ")));
    contentWords.retainAll(keywords); 
    // now contentWords contains only words from keywords, in this case just "keyword1"
    

    如果您想从内容中获取所有关键字的词,请改用:

    contentWords.removeAll(keywords);
    

    使用TreeSet 应该可以让它表现得很好。

    为了便于说明,已对编译和运行的代码进行了简化。您将不得不从数据库等加载您的关键字,并从任何地方等加载您的内容。

    【讨论】:

    • 这有点太直接了?您不删除停用词,在多语言中,不区分大小写。 retainAll() 算法会做 2 次循环
    【解决方案2】:

    我们已经做了一些基于 Lucene indexed Set 的概念验证。

    • 它处理所有语言/文本问题
    • 够快了

    但是一个好的答案需要大量的相关内容。所以结果有时很奇怪。而且是服务器端...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 2019-07-22
      相关资源
      最近更新 更多