将关键字与句子数据库匹配,如何避免结果中重复的关键字?

时间:2012-05-06 04:08:20

标签: ruby database

我是编程新手,也是Ruby的初学者。我已经做了很多搜索,试图找到我需要的答案,但似乎没有什么能与我正在寻找的东西相匹配。

我需要为以下工作制作一个程序:

  1. 从用户那里获取关键字
  2. 在句子数据库中将这些关键字与相同的关键字匹配,然后
  3. 吐出随机句子:
    1. 包含所有关键字1次
    2. 不包含未列出的关键字
    3. 不要重复关键字
  4. 重要的是要知道:句子都有几个关键词,而不是每个句子一个

    1& 2可以,我已经能够做到了。我的问题在于第3部分。我已经尝试了很长的“if include?”列表参数,但它永远不会结束工作,我知道必须有一个更好的方法来做到这一点。

    我对Ruby的掌握(以及一般的编程)是基本的,我不知道它能做什么和不能做什么,所以非常感谢非常感谢任何有用的功能提示或提示。

1 个答案:

答案 0 :(得分:0)

如果找到了匹配项,为什么不连续将它从数组/ db中弹出?它将确保不会重复,因为以后不会出现该记录。没有? 请考虑以下代码段:

db=%q(It is hot today), %q(It is going to rain), %q(Where are you, sonny?), %q(sentence contains is and are)
keyw=%w(is am are)
de=[]
keyw.each do |word|
    for index in 0...db.length  
        if db[index].include?(word)    
            puts "Matched #{word} with #{db[index]}"      
            de<<index
        end  
    end  
    until de.empty?
        db.delete_at(de.pop)
    end
end 

db是数据库示例,keyw包含关键字。

对应输出:

Matched is with It is hot today
Matched is with It is going to rain
Matched is with sentence contains is and are
Matched are with Where are you, sonny?

没有重复。 :)