/*
   * Ensures that searching takes the owner's working copies into account.
   */
  public void testSearch2() throws CoreException {
    ICompilationUnit cu = getCompilationUnit("P/X.java");
    TestWorkingCopyOwner owner = new TestWorkingCopyOwner();
    this.workingCopy = cu.getWorkingCopy(owner, null);

    // remove type X
    this.workingCopy.getBuffer().setContents("");
    this.workingCopy.makeConsistent(null);

    SearchPattern pattern =
        SearchPattern.createPattern(
            "X",
            IJavaSearchConstants.TYPE,
            IJavaSearchConstants.DECLARATIONS,
            SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);
    JavaSearchTests.JavaSearchResultCollector resultCollector =
        new JavaSearchTests.JavaSearchResultCollector();
    new SearchEngine(owner)
        .search(
            pattern,
            new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
            SearchEngine.createWorkspaceScope(),
            resultCollector,
            null);
    assertEquals(
        "", // should not find any in the owner's context
        resultCollector.toString());
  }
  /*
   * Ensures that searching takes the primary owner's working copies into account only if the working copy
   * is not saved.
   */
  public void testSearch3() throws CoreException {
    try {
      createFile("/P/Y.java", "");
      this.workingCopy = getCompilationUnit("P/Y.java");
      this.workingCopy.becomeWorkingCopy(null);

      // create type Y in working copy
      this.workingCopy.getBuffer().setContents("public class Y {}");
      this.workingCopy.makeConsistent(null);

      JavaSearchTests.JavaSearchResultCollector resultCollector =
          new JavaSearchTests.JavaSearchResultCollector();
      search(
          "Y",
          IJavaSearchConstants.TYPE,
          IJavaSearchConstants.DECLARATIONS,
          SearchEngine.createWorkspaceScope(),
          resultCollector);
      assertEquals("Y.java Y [Y]", resultCollector.toString());

      //	commit new type
      this.workingCopy.commitWorkingCopy(false, null);
      resultCollector = new JavaSearchTests.JavaSearchResultCollector();
      search(
          "Y",
          IJavaSearchConstants.TYPE,
          IJavaSearchConstants.DECLARATIONS,
          SearchEngine.createWorkspaceScope(),
          resultCollector);
      assertEquals("Y.java Y [Y]", resultCollector.toString());
    } finally {
      deleteFile("/P/Y.java");
    }
  }
  public static void addDocuments(
      String searchEngineId, long companyId, Collection<Document> documents)
      throws SearchException {

    if (isIndexReadOnly() || (documents == null) || documents.isEmpty()) {
      return;
    }

    SearchEngine searchEngine = getSearchEngine(searchEngineId);

    IndexWriter indexWriter = searchEngine.getIndexWriter();

    for (Document document : documents) {
      if (_log.isDebugEnabled()) {
        _log.debug("Add document " + document.toString());
      }

      _searchPermissionChecker.addPermissionFields(companyId, document);
    }

    SearchContext searchContext = new SearchContext();

    searchContext.setCompanyId(companyId);
    searchContext.setSearchEngineId(searchEngineId);

    indexWriter.addDocuments(searchContext, documents);
  }
Exemplo n.º 4
0
 private void searchForTypesUsed(
     SearchEngine engine, IJavaElement parent, IType[] types, IJavaSearchScope scope)
     throws CoreException {
   for (int i = 0; i < types.length; i++) {
     if (types[i].isAnonymous()) continue;
     TypeReferenceSearchRequestor requestor = new TypeReferenceSearchRequestor();
     engine.search(
         SearchPattern.createPattern(types[i], IJavaSearchConstants.REFERENCES),
         new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
         scope,
         requestor,
         null);
     if (requestor.containMatches()) {
       TypeDeclarationSearchRequestor decRequestor = new TypeDeclarationSearchRequestor();
       engine.search(
           SearchPattern.createPattern(types[i], IJavaSearchConstants.DECLARATIONS),
           new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
           SearchEngine.createJavaSearchScope(new IJavaElement[] {parent}),
           decRequestor,
           null);
       Match match = decRequestor.getMatch();
       if (match != null) fSearchResult.addMatch(match);
     }
   }
 }
  public static String spellCheckKeywords(SearchContext searchContext) throws SearchException {

    if (_log.isDebugEnabled()) {
      _log.debug("Spell checking " + searchContext.getKeywords());
    }

    SearchEngine searchEngine = getSearchEngine(searchContext.getSearchEngineId());

    IndexSearcher indexSearcher = searchEngine.getIndexSearcher();

    return indexSearcher.spellCheckKeywords(searchContext);
  }
Exemplo n.º 6
0
  private SearchEngine getSearchEngineFromName(String enginename) {
    List<SearchEngine> selist = getSearchEnginesFromXml().getSearchEngines();

    String[] seNames = new String[selist.size()];
    int i = 0;
    for (SearchEngine se : selist) {
      if (se.getName().equals(enginename)) {
        return se;
      }
    }
    return null;
  }
  public static Hits search(SearchContext searchContext, Query query) throws SearchException {

    if (_log.isDebugEnabled()) {
      _log.debug("Search query " + query.toString());
    }

    SearchEngine searchEngine = getSearchEngine(searchContext.getSearchEngineId());

    IndexSearcher indexSearcher = searchEngine.getIndexSearcher();

    return indexSearcher.search(searchContext, query);
  }
Exemplo n.º 8
0
 private void updateCheckboxes(List<SearchEngine> engines) {
   for (SearchEngine se : engines) {
     JCheckBox cBox = engineCheckboxes.get(se);
     if (cBox != null) {
       if (cBox.isEnabled() && !cBox.isSelected() && se.isEnabled()) {
         continue;
       }
       cBox.setSelected(se.isEnabled());
       cBox.setEnabled(se.isEnabled());
     }
   }
 }
  public static String[] suggestKeywordQueries(SearchContext searchContext, int max)
      throws SearchException {

    if (_log.isDebugEnabled()) {
      _log.debug("Suggesting keyword queries" + searchContext.getKeywords());
    }

    SearchEngine searchEngine = getSearchEngine(searchContext.getSearchEngineId());

    IndexSearcher indexSearcher = searchEngine.getIndexSearcher();

    return indexSearcher.suggestKeywordQueries(searchContext, max);
  }
  public static Hits search(
      String searchEngineId, long companyId, Query query, Sort[] sorts, int start, int end)
      throws SearchException {

    if (_log.isDebugEnabled()) {
      _log.debug("Search query " + query.toString());
    }

    SearchEngine searchEngine = getSearchEngine(searchEngineId);

    IndexSearcher indexSearcher = searchEngine.getIndexSearcher();

    return indexSearcher.search(searchEngineId, companyId, query, sorts, start, end);
  }
  public static void indexDictionaries(String searchEngineId, long companyId)
      throws SearchException {

    SearchEngine searchEngine = getSearchEngine(searchEngineId);

    IndexWriter indexWriter = searchEngine.getIndexWriter();

    SearchContext searchContext = new SearchContext();

    searchContext.setCompanyId(companyId);
    searchContext.setSearchEngineId(searchEngineId);

    indexWriter.indexDictionaries(searchContext);
  }
Exemplo n.º 12
0
 private JComponent createSearchEnginesFilter() {
   JPanel panel = new JPanel();
   panel.setLayout(new MigLayout("insets 3, wrap 2"));
   List<SearchEngine> searchEngines = SearchEngine.getEngines();
   setupCheckboxes(searchEngines, panel);
   return panel;
 }
Exemplo n.º 13
0
 public void updateFiltersPanel() {
   generalFilter =
       new GeneralResultFilter(resultPanel, sliderSeeds, sliderSize, textFieldKeywords);
   updateCheckboxes(SearchEngine.getEngines());
   resultPanel.filterChanged(new SearchEngineFilter(engineCheckboxes), 0);
   resultPanel.filterChanged(generalFilter, 1);
 }
Exemplo n.º 14
0
 private HtmlPage getPage(String url) throws IOException {
   final WebClient webClient =
       new WebClient(
           getBrowserVersionFromName(
               searchEngine.getDefaultBrowser())); // BrowserVersion.FIREFOX_24);
   webClient.getOptions().setJavaScriptEnabled(false);
   return webClient.getPage(url);
 }
Exemplo n.º 15
0
  private void search(SearchEngine se) {
    try {

      initializeJdbc();
      final WebClient webClient =
          new WebClient(
              getBrowserVersionFromName(se.getDefaultBrowser())); // BrowserVersion.FIREFOX_24);
      // webClient.getOptions().setThrowExceptionOnScriptError(false);
      String htmlSource;
      HtmlPage searchResultPage = null;
      //            String baseUrl = url;

      int numberOfUrlsExtracted;
      searchResultPage = clickSearchButtonMainPage(webClient, se);
      htmlSource = searchResultPage.getWebResponse().getContentAsString();

      numberOfUrlsExtracted =
          ExtractAndInsertSeedUrls(searchResultPage, htmlSource, 1, 0, se.getName());
      target.dispatchEvent(new EventSearchWorker(target, 1));

      try {
        for (int i = 1; i < maxPage; i++) {
          HtmlAnchor ha =
              (HtmlAnchor) getNextButtonOrLink(searchResultPage, se.getNextButtonIdentifier());

          searchResultPage = ha.click();
          htmlSource = searchResultPage.getWebResponse().getContentAsString();
          numberOfUrlsExtracted =
              ExtractAndInsertSeedUrls(
                  searchResultPage, htmlSource, i + 1, numberOfUrlsExtracted, se.getName());
          // nextUrl = getNextUrl(b, se, baseUrl);
          target.dispatchEvent(new EventSearchWorker(target, 1));

          Random r = new Random();
          int randomSleepTime = r.nextInt(2000) + 200; // minimum 200 ms max 2200 ms
          Thread.sleep(randomSleepTime);
        }
        // fw.close();
      } catch (Exception ex) {
        String x = ex.getMessage();
      }
      webClient.closeAllWindows();
    } catch (Exception ex) {
      String x = ex.getMessage();
    }
  }
  public static void deleteDocuments(String searchEngineId, long companyId, Collection<String> uids)
      throws SearchException {

    if (isIndexReadOnly() || (uids == null) || uids.isEmpty()) {
      return;
    }

    SearchEngine searchEngine = getSearchEngine(searchEngineId);

    IndexWriter indexWriter = searchEngine.getIndexWriter();

    SearchContext searchContext = new SearchContext();

    searchContext.setCompanyId(companyId);
    searchContext.setSearchEngineId(searchEngineId);

    indexWriter.deleteDocuments(searchContext, uids);
  }
  public static void deleteDocument(String searchEngineId, long companyId, String uid)
      throws SearchException {

    if (isIndexReadOnly()) {
      return;
    }

    SearchEngine searchEngine = getSearchEngine(searchEngineId);

    IndexWriter indexWriter = searchEngine.getIndexWriter();

    SearchContext searchContext = new SearchContext();

    searchContext.setCompanyId(companyId);
    searchContext.setSearchEngineId(searchEngineId);

    indexWriter.deleteDocument(searchContext, uid);
  }
  /*
   * Ensures that searching takes the primary owner's working copies and the given working copies into account.
   * (regression test for bug 43300 SearchEngine(IWorkingCopy[] workingCopies) not backward compatible)
   */
  public void testSearch4() throws CoreException {
    ICompilationUnit primaryWorkingCopy = null;
    try {
      createFolder("P/p");
      createFile("/P/p/Y.java", "");
      primaryWorkingCopy = getCompilationUnit("P/p/Y.java");
      primaryWorkingCopy.becomeWorkingCopy(null);

      // create type Y in working copy
      primaryWorkingCopy.getBuffer().setContents("package p;\n" + "public class Y {\n" + "}");
      primaryWorkingCopy.makeConsistent(null);

      // create new working copy on X.java and add type X
      this.workingCopy = getCompilationUnit("P/p/X.java").getWorkingCopy(null);
      this.workingCopy.getBuffer().setContents("package p;\n" + "public class X {\n" + "}");
      this.workingCopy.makeConsistent(null);

      JavaSearchTests.JavaSearchResultCollector resultCollector =
          new JavaSearchTests.JavaSearchResultCollector();
      IJavaSearchScope scope =
          SearchEngine.createJavaSearchScope(new IJavaElement[] {primaryWorkingCopy.getParent()});
      SearchPattern pattern =
          SearchPattern.createPattern(
              "*",
              IJavaSearchConstants.TYPE,
              IJavaSearchConstants.DECLARATIONS,
              SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE);
      new SearchEngine(new ICompilationUnit[] {this.workingCopy})
          .search(
              pattern,
              new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
              scope,
              resultCollector,
              null);
      assertEquals("p/X.java p.X [X]\n" + "p/Y.java p.Y [Y]", resultCollector.toString());

    } finally {
      if (primaryWorkingCopy != null) {
        primaryWorkingCopy.discardWorkingCopy();
      }
      deleteFile("/P/p/Y.java");
    }
  }
Exemplo n.º 19
0
 public void search(String str, int filter) {
   // this.contentPane.removeAll();
   // this.contentPane.add(topMenu);
   // this.contentPane.add(panel);
   // this.contentPane.add(resultPanel);
   // mainWindow.messageBox.showMessage("Error Opening", "There was trouble opening this node..\n
   // contact sanjay verma");
   this.resultPanel.removeAll();
   this.button.setEnabled(false);
   this.textField.setEnabled(false);
   this.comboBox.setEnabled(false);
   this.btnCancel.setEnabled(true);
   updateResultLabel(0, 0);
   this.repaint();
   layoutCount = 0;
   SearchEngine se = new SearchEngine();
   se.setData(str, filter, this);
   th = new Thread(se);
   th.start();
   // se.search(str,this);
 }
Exemplo n.º 20
0
  private HtmlPage clickSearchButtonMainPage(final WebClient webClient, SearchEngine se) {

    String url = se.getBaseUrl();
    String queryTextboxName = se.getQueryTextBoxName();
    String searchButtonId = se.getSubmitButtonId();
    String searchButtonName = se.getSubmitButtonName();
    Object tempSubmitFromName, tempSubmitFromId, tempSubmitFromTagName;

    try {
      HtmlPage page1 = webClient.getPage(url);
      HtmlInput input1 = page1.getElementByName(queryTextboxName);
      input1.setValueAttribute(query);
      tempSubmitFromName = page1.getElementByName(searchButtonName);
      return clickButtonReturnPage(tempSubmitFromName);
      //                baseUrl = page1.getUrl().toString();
    } catch (Exception ex) {
      String aaa = "deneme";
    }
    try {
      HtmlPage page1 = webClient.getPage(url);
      HtmlInput input1 = page1.getElementByName(queryTextboxName);
      input1.setValueAttribute(query);
      tempSubmitFromId = page1.getElementById(searchButtonId);
      return clickButtonReturnPage(tempSubmitFromId);
      //               baseUrl = page1.getUrl().toString();
    } catch (Exception ex2) {
      String aaa = "deneme";
    }
    try {
      HtmlPage page1 = webClient.getPage(url);
      HtmlInput input1 = page1.getElementByName(queryTextboxName);
      input1.setValueAttribute(query);
      tempSubmitFromTagName = page1.getElementsByTagName("button").get(0);
      return clickButtonReturnPage(tempSubmitFromTagName);
      //                baseUrl = page1.getUrl().toString();
    } catch (Exception ex2) {
      String aaa = "deneme";
    }
    return null;
  }
  public static void updateDocument(String searchEngineId, long companyId, Document document)
      throws SearchException {

    if (isIndexReadOnly()) {
      return;
    }

    if (_log.isDebugEnabled()) {
      _log.debug("Document " + document.toString());
    }

    SearchEngine searchEngine = getSearchEngine(searchEngineId);

    IndexWriter indexWriter = searchEngine.getIndexWriter();

    _searchPermissionChecker.addPermissionFields(companyId, document);

    SearchContext searchContext = new SearchContext();

    searchContext.setCompanyId(companyId);
    searchContext.setSearchEngineId(searchEngineId);

    indexWriter.updateDocument(searchContext, document);
  }
  /*
   * Ensures that searching takes the owner's working copies into account.
   */
  public void testSearch1() throws CoreException {
    ICompilationUnit cu = getCompilationUnit("P/Y.java");
    TestWorkingCopyOwner owner = new TestWorkingCopyOwner();
    this.workingCopy = cu.getWorkingCopy(owner, null);
    this.workingCopy.getBuffer().setContents("public class Y {\n" + "  X field;\n" + "}");
    this.workingCopy.makeConsistent(null);

    SearchPattern pattern =
        SearchPattern.createPattern(
            "X",
            IJavaSearchConstants.TYPE,
            IJavaSearchConstants.REFERENCES,
            SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);
    JavaSearchTests.JavaSearchResultCollector resultCollector =
        new JavaSearchTests.JavaSearchResultCollector();
    new SearchEngine(owner)
        .search(
            pattern,
            new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
            SearchEngine.createWorkspaceScope(),
            resultCollector,
            null);
    assertEquals("Y.java Y.field [X]", resultCollector.toString());
  }
Exemplo n.º 23
0
 @Override
 public void run() {
   try {
     SearchEngine.Result result = engine.search(query, page);
     if (run) {
       h.post(new ResultRunnable(result, requestId));
     }
   } catch (Exception e) {
     e.printStackTrace();
     h.post(
         new Runnable() {
           @Override
           public void run() {
             Toast.makeText(getActivity(), "Network Error", Toast.LENGTH_SHORT).show();
           }
         });
   }
 }
Exemplo n.º 24
0
  protected String[] getPathsOfDeclaringType() {
    if (this.typeQualification == null && this.typeSimpleName == null) return null;

    final PathCollector pathCollector = new PathCollector();
    IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
    IndexManager indexManager = JavaModelManager.getIndexManager();
    SearchPattern searchPattern =
        new TypeDeclarationPattern(
            this.typeSimpleName != null
                ? null
                : this.typeQualification, // use the qualification only if no simple name
            null, // do find member types
            this.typeSimpleName,
            IIndexConstants.TYPE_SUFFIX,
            this.pattern.getMatchRule());
    IndexQueryRequestor searchRequestor =
        new IndexQueryRequestor() {
          public boolean acceptIndexMatch(
              String documentPath,
              SearchPattern indexRecord,
              SearchParticipant participant,
              AccessRuleSet access) {
            TypeDeclarationPattern record = (TypeDeclarationPattern) indexRecord;
            if (record.enclosingTypeNames
                != IIndexConstants.ONE_ZERO_CHAR) { // filter out local and anonymous classes
              pathCollector.acceptIndexMatch(documentPath, indexRecord, participant, access);
            }
            return true;
          }
        };

    indexManager.performConcurrentJob(
        new PatternSearchJob(searchPattern, new JavaSearchParticipant(), scope, searchRequestor),
        IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
        progressMonitor == null ? null : new SubProgressMonitor(progressMonitor, 100));
    return pathCollector.getPaths();
  }
Exemplo n.º 25
0
  private void setupCheckboxes(List<SearchEngine> searchEngines, JPanel parent) {

    final Map<JCheckBox, BooleanSetting> cBoxes = new HashMap<JCheckBox, BooleanSetting>();

    ItemListener listener =
        new ItemListener() {
          public void itemStateChanged(ItemEvent e) {
            if (areAll(false)) {
              ((JCheckBox) e.getItemSelectable()).setSelected(true);
            }

            if (resultPanel != null) {
              resultPanel.filterChanged(new SearchEngineFilter(engineCheckboxes), 0);
            }
          }
        };

    for (SearchEngine se : searchEngines) {
      JCheckBox cBox = new JCheckBox(se.getName());
      cBox.setSelected(se.isEnabled());
      cBox.setEnabled(se.isEnabled());

      if (!cBox.isEnabled()) {
        cBox.setToolTipText(
            se.getName()
                + " "
                + I18n.tr(
                    "has been disabled on your FrostWire Search Options. (Go to Tools > Options > Search to enable)"));
      }

      parent.add(cBox);

      cBoxes.put(cBox, se.getEnabledSetting());
      cBox.addItemListener(listener);

      engineCheckboxes.put(se, cBox);
    }
  }
Exemplo n.º 26
0
  @Test
  public final void testSearch() throws IOException {
    SimpleIOHandler reader = new SimpleIOHandler();
    Model model =
        reader.convertFromOWL(
            resourceLoader.getResource("classpath:merge/pathwaydata1.owl").getInputStream());
    SearchEngine searchEngine = new SearchEngine(model, indexLocation);
    searchEngine.index();
    assertTrue(new File(indexLocation).exists());

    SearchResponse response = searchEngine.search("ATP", 0, null, null, null);
    assertNotNull(response);
    assertFalse(response.isEmpty());
    assertEquals(7, response.getSearchHit().size());
    assertEquals(7, response.getNumHits().intValue());

    CPathSettings.getInstance().setDebugEnabled(false);
    response = searchEngine.search("ATP", 0, Interaction.class, null, null);
    assertNotNull(response);
    assertFalse(response.isEmpty());
    assertEquals(2, response.getSearchHit().size());
    // if cPath2 debugging is disabled, - no score/explain in the excerpt
    assertFalse(response.getSearchHit().get(0).getExcerpt().contains("-SCORE-"));

    // enable cPath2 debugging...
    CPathSettings.getInstance().setDebugEnabled(true);

    response = searchEngine.search("ATP", 0, Pathway.class, null, null);
    assertNotNull(response);
    assertFalse(response.isEmpty());
    assertEquals(1, response.getSearchHit().size());

    SearchHit hit = response.getSearchHit().get(0);
    assertEquals(4, hit.getSize().intValue()); // no. member processes, not counting the hit itself
    assertTrue(hit.getExcerpt().contains("-SCORE-"));
    CPathSettings.getInstance().setDebugEnabled(false);

    // test a special implementation for wildcard queries
    response = searchEngine.search("*", 0, Pathway.class, null, null);
    assertNotNull(response);
    assertFalse(response.isEmpty());
    assertEquals(1, response.getSearchHit().size());

    // find all objects (this here works with page=0 as long as the
    // total no. objects in the test model < max hits per page)
    response = searchEngine.search("*", 0, null, null, null);
    assertEquals(50, response.getSearchHit().size());

    response = searchEngine.search("*", 0, PhysicalEntity.class, null, null);
    assertEquals(8, response.getSearchHit().size());

    response = searchEngine.search("*", 0, PhysicalEntity.class, null, new String[] {"562"});
    assertEquals(2, response.getSearchHit().size());

    response =
        searchEngine.search("*", 0, PhysicalEntity.class, null, new String[] {"Escherichia"});
    assertFalse(response.isEmpty());
    assertEquals(2, response.getSearchHit().size());

    response =
        searchEngine.search("*", 0, PhysicalEntity.class, null, new String[] {"Escherichia coliü"});
    assertFalse(response.isEmpty());
    assertEquals(2, response.getSearchHit().size());

    response = searchEngine.search("*", 0, Provenance.class, null, null);
    assertEquals(2, response.getSearchHit().size());

    response = searchEngine.search("*", 0, Provenance.class, new String[] {"kegg"}, null);
    assertEquals(1, response.getSearchHit().size());

    // datasource filter using a URI (required for -update-counts console command and
    // datasources.html page to work)
    response =
        searchEngine.search(
            "*", 0, Pathway.class, new String[] {"http://identifiers.org/kegg.pathway/"}, null);
    assertFalse(response.isEmpty());
    assertEquals(1, response.getSearchHit().size());

    response =
        searchEngine.search("pathway:glycolysis", 0, SmallMoleculeReference.class, null, null);
    assertEquals(5, response.getSearchHit().size());

    // test search with pagination
    searchEngine.setMaxHitsPerPage(10);
    response = searchEngine.search("*", 0, null, null, null);
    assertEquals(0, response.getPageNo().intValue());

    assertEquals(50, response.getNumHits().intValue());
    assertEquals(10, response.getSearchHit().size());
    response = searchEngine.search("*", 1, null, null, null);
    assertEquals(10, response.getSearchHit().size());

    assertEquals(1, response.getPageNo().intValue());
  }
Exemplo n.º 27
0
 /**
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception {
   // TODO Auto-generated method stub
   ArrayList<Document> documents = SearchEngine.generateMySearchResult("machine learning");
   for (int i = 0; i < documents.size(); i++) System.out.println(documents.get(i).get("url"));
 }