/** * 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(); }
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 $; }