2014-02-13 4 views
1

У меня есть огромный список слов (около 50K), хранящихся в db (я использую activerecord), что я хотел бы использовать и получать совпадающие слова против фрагмента текста.Как получить общие элементы/слова?

Я знаю, рубин обеспечивает Пересечения

t = "this is a sample text, was created for demo" 
w = ["is","a","was","to","and"] 

t.split & w #=> ["is", "a", "was"] 

Но как я могу сделать это за 50К слов? Частота такого матча, вероятно, будет около 1000 раз в день.

+0

вы сделали это ..... –

+1

вы должны поместить этот текст в глобальную переменную или кеш, чтобы сократить время, чтобы ударить БД несколько раз и может установить обратный вызов после обновления, чтобы обновить эту глобальную переменную или кеш, когда этот текст получит обновлено в базе данных –

ответ

1

Как насчет использования полнотекстовых поисковых систем для этого? Вот некоторые ссылки:

  1. Thinking Sphinx драгоценный камень для поисковой системы Sphinx.
  2. RSolr драгоценный камень для поисковой системы Solr.

Я понимаю, что это может быть излишним для вашей текущей задачи, но это наиболее подходящее и эффективное решение для более сложных вариантов.

Смежные вопросы