如何选择匹配最多的字符串匹配?

时间:2015-05-01 16:16:49

标签: java search keyword

我试图选择包含最多匹配的前3个字符串。
我会这样解释:
假设我们有以下关键字:" pc,编程,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 ???

中执行此操作

2 个答案:

答案 0 :(得分:1)

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

遍历每个句子,执行indexOf检查每个关键字。如果返回的值不是-1,则递增该句子的计数器。对每个关键字重复一次最后找到具有最高计数器的3个句子。

这种方法会遇到各种各样的问题,包括:

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

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

答案 1 :(得分:1)

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

选择一个教授Regex的网站。我建议这个首发。 http://regexone.com/

然后,熟悉Java Regex。我建议调查捕获组。

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