dawrehxyz

wild

May 5th, 2020
2,128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.14 KB | None | 0 0
  1.     private PostingsList Get_Wildcard_Postings_List(Query query, QueryType queryType, RankingType rankingType, NormalizationType normType)
  2.     {
  3.         ArrayList<HashSet<String>> query_terms_arr = kgIndex.Get_Wildcard_Query_Terms(query);
  4.         query.queryterm.clear();
  5.  
  6.         if(queryType == QueryType.RANKED_QUERY)
  7.         {
  8.             HashSet<String> all_query_terms = new HashSet<>();
  9.             for(HashSet<String> query_terms : query_terms_arr)
  10.             {
  11.                 all_query_terms.addAll(query_terms);
  12.             }
  13.             for(String term : all_query_terms)
  14.             {
  15.                 query.queryterm.add(query.new QueryTerm(term, 1.0));
  16.             }
  17.             return search(query, queryType, rankingType, normType);
  18.         }
  19.         else
  20.         {
  21.             ArrayList<PostingsList> pl_arr = new ArrayList<>();
  22.             for(int a = 0; a < query_terms_arr.size(); a++)
  23.             {
  24.                 PostingsList pl = null;
  25.                 Iterator<String> it = query_terms_arr.get(a).iterator();
  26.                 if(it.hasNext()) pl = index.getPostings(it.next());
  27.                 while(it.hasNext())
  28.                 {
  29.                     pl.Merge_Postings_List(index.getPostings(it.next()));
  30.                 }
  31.                 pl.SortBasedOnDocIds();
  32.                 pl_arr.add(pl);
  33.             }
  34.            
  35.             PostingsList pl = pl_arr.get(0);
  36.             for(int a = 1; a < pl_arr.size(); a++)
  37.             {
  38.                 if(queryType == QueryType.INTERSECTION_QUERY)
  39.                     pl = IntersectionAlgorithmHelper(pl, pl_arr.get(a));
  40.                 else
  41.                     pl = PhraseAlgorithmHelper(pl, pl_arr.get(a));
  42.                 if(pl == null) return null;
  43.             }
  44.             if(pl == null) return null;
  45.             pl = Remove_Duplicates_From_Postings_List(pl);
  46.             return pl;
  47.         }
  48.     }
  49.  
  50.     private PostingsList Remove_Duplicates_From_Postings_List(PostingsList postings_list)
  51.     {
  52.         PostingsList return_postings_list = new PostingsList();
  53.         HashSet<Integer> doc_ids = new HashSet<>();
  54.         for(int a = 0; a < postings_list.size(); a++)
  55.         {
  56.             PostingsEntry pe = postings_list.get(a);
  57.             if(doc_ids.contains(pe.docID) == false)
  58.             {
  59.                 doc_ids.add(pe.docID);
  60.                 return_postings_list.AddPostingsEntry(pe);
  61.             }
  62.         }
  63.         return return_postings_list;
  64.     }
  65.  
  66.     private Boolean Is_Wildcard_Query(Query query)
  67.     {
  68.         for(int a = 0; a < query.queryterm.size(); a++)
  69.         {
  70.             if(query.queryterm.get(a).term.contains("*"))
  71.             {
  72.                 return true;
  73.             }
  74.         }
  75.         return false;
  76.     }
  77.  
  78.     /**
  79.      *  Searches the index for postings matching the query.
  80.      *  @return A postings list representing the result of the query.
  81.      */
  82.     public PostingsList search(Query query, QueryType queryType, RankingType rankingType, NormalizationType normType)
  83.     {
  84.         if (query.queryterm == null) return null;
  85.         else if(query.queryterm.size() == 0) return null;
  86.         else if(Is_Wildcard_Query(query) == true) return Get_Wildcard_Postings_List(query, queryType, rankingType, normType);
  87.  
  88.         if(queryType == QueryType.INTERSECTION_QUERY) return IntersectionAlgorithm(query);
  89.         else if(queryType == QueryType.PHRASE_QUERY) return PhraseAlgorithm(query);
  90.         else if(queryType == QueryType.RANKED_QUERY)
  91.         {
  92.             if(rankingType == RankingType.TF_IDF)
  93.             {
  94.                 PostingsList postings_list = TF_IDF_Algorithm(query, false, normType);
  95.                 boolean ndcg = true;
  96.                 if(ndcg == true) Caluclate_NDCG(postings_list);
  97.                 return postings_list;
  98.             }
  99.             else if(rankingType == RankingType.PAGERANK) return PAGERANK_Algorithm(query, false);
  100.             else if(rankingType == RankingType.COMBINATION) return COMBINATION_Algorithm(query, normType);
  101.             else if(rankingType == RankingType.HITSRANKER) return HITSRanker_Algorithm(query);
  102.             else return null;
  103.         }
  104.         else return null;
  105.     }
Advertisement
Add Comment
Please, Sign In to add comment