コード例 #1
0
  /**
   * Searches for a searchKey in the tree. Also retrieves most relevant snippet.
   *
   * @param searchKey, user typed search string.
   * @return String, the most relevant snippet.
   */
  public String search(String searchKey) {
    searchKey = searchKey.toLowerCase();
    searchKey = searchKey.trim();

    searchTerms = searchKey.split("\\W"); // Split around all non-word characters.

    ArrayList<Integer> termIndex = new ArrayList<Integer>();
    ArrayList<Integer> temp;
    Snippet mostRelevantSnippet = null;

    if (searchTerms.length != 0) {
      // Retrieve all indexes of search terms from trieTree
      for (int i = 0; i < searchTerms.length; i++) {
        temp = trieTree.getWordIndexes(searchTerms[i]);
        if (temp != null) termIndex.addAll(temp);
      }

      ArrayList<Snippet> allSnippets = new ArrayList<Snippet>();
      // Now extract snippets around each term search result.
      for (int i = 0; i < termIndex.size(); i++) {
        allSnippets.add(docParser.getSnippet(termIndex.get(i)));
      }

      for (int i = 0; i < allSnippets.size(); i++)
        System.out.println("Snippet " + i + " : " + allSnippets.get(i));

      // Score each snippet and extract most relevant one.
      mostRelevantSnippet = relevanceEngine.getMostRelevant(allSnippets, searchTerms);
    }

    if (mostRelevantSnippet == null) return null;

    return mostRelevantSnippet.toString();
  }
コード例 #2
0
ファイル: Snippets.java プロジェクト: yossigil/Protolog
 default Snippets cat(final Iterable<Snippet> ss) {
   final Snippets $ = make();
   for (final Snippet s1 : this) for (final Snippet s2 : ss) $.add(s1.toString() + s2.toString());
   return $;
 }