2015-05-01 92 views
-3

我試圖選擇前3名的字符串包含最匹配..
我將解釋它是這樣的:
假設我們有以下關鍵字:「個人電腦,編程,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中做到這一點?

回答

1

如果數據集是小,你只關心精確匹配,你可以這樣做以下:

循環每個你的句子進行鍼對每個關鍵字的的indexOf檢查。如果這返回不是-1的東西,則增加該句子的計數器。對每個關鍵字重複。最後找到具有最高計數器的3個句子。

這種做法會產生種種問題,雖然包括的東西,如:

  • 忽略大小寫
  • 標籤匹配部分單詞,例如「Java的」匹配「的javascript」

理想情況下,你會使用類似的Lucene/Solr的/ ElasticSearch全文引擎,讓那些所有繁重的你

1

可以說是最簡單的方法是使用正則表達式,一個基於表達式的系統,用於搜索字符串中的模式。

拿起教導正則表達式的網站。我建議這個爲初學者。 http://regexone.com/

然後,熟悉Java Regex。我建議尋找捕獲組。

我不會給你這樣做的代碼,因爲我相信你可以看到很多在線的例子,並且你自己最好學習如何去做。