2015-09-22 80 views
0

我有一個電影列表。哪個關鍵字搜索算法?

eg: 
Iron Man - 2008 
Iron Man 2 - 2010 
Iron Man 3 - 2013 
Shawshank Redemption - 2000 

我想實現基於關鍵字的搜索算法。如果我進入鐵,所有3鋼鐵俠電影應該出現。鋼鐵俠2010,只有鋼鐵俠2應該進來的結果。

我想到了TF-IDF,但它並沒有考慮單詞的順序。即如果有電影Man Iron,即使輸入的關鍵字是Iron Man,它也將具有與Iron Man相同的排名。

哪種算法在這種情況下效果最好,哪些順序詞也被考慮?

+0

你有沒有考慮使用Trie數據結構和搜索將會非常簡單。只有當搜索輸入與輸入數據一樣正確時。 – YoungHobbit

回答

0

使用正則表達式。 打破所有的搜索結果與空間

#algo 
movie_list = ['Iron man 2008', 'Iron man 2010','Iron man 2013'] 
partial_results = {} 
i=0 
movie = "Iron man 2010" 
words = movie.split(" ") 

for a_movie in movie_list: 
    print_unique_movie = true 
    for each_word in words: 
     if each_word in a_movie: 
      partial_results[i] = a_movie 
      continue 
     else 
      print_unique_movie = false 
    i +=1 
    if print_movie: 
      print a_movie 
    else: 
      for key,value in partial_results.iteritems(): 
       print value 

雖然肯定這是一個非常基本的方式。您可以使用regex來開始優化。另外,如果它在操作系統級別上,則可以使用文件索引。