【问题标题】:How to select strings with the most keywords matches?如何选择关键字匹配最多的字符串?
【发布时间】:2015-05-01 16:16:48
【问题描述】:

我正在尝试选择包含最多匹配项的前 3 个字符串..
我会这样解释:
假设我们有以下关键字:“pc、programming、php、java”
以及以下句子:

    a[0]="what is java??"<br>
    a[1]="I love playing and programming on pc"<br>
    a[2]="I'm good at programming php and java"<br>
    a[3]="I'm programming php and java on my pc"<br>

所以只有最后 3 个字符串必须被选中,因为它们是包含最多匹配项的前 3 个字符串。
如何在java中做到这一点???

【问题讨论】:

    标签: java search keyword


    【解决方案1】:

    如果您的数据集很小并且您只关心完全匹配,您可以执行以下操作:

    循环遍历您的每个句子,对每个关键字执行 indexOf 检查。如果这返回不是 -1 的内容,则为该句子增加一个计数器。对每个关键字重复。最后找到计数器最高的 3 个句子。

    这种方法会有各种各样的问题,但包括以下内容:

    • 不区分大小写
    • 标签匹配部分单词,例如“java”匹配“javascript”

    理想情况下,您会使用像 Lucene/Solr/ElasticSearch 这样的全文引擎,并让其为您完成所有繁重的工作

    【讨论】:

      【解决方案2】:

      可以说最简单的方法是使用正则表达式,这是一个基于表达式的系统,可以在字符串中搜索模式。

      选择一个教授正则表达式的网站。我建议初学者使用这个。 http://regexone.com/

      然后,熟悉 Java 正则表达式。我建议调查捕获组。

      我不会给你代码来做这件事,因为我相信有很多在线例子你可以看,而且你最好自己学习如何做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多