/** * just shows empty page. need to determine what to show on default page. * * @param Request $request * * @return \Symfony\Component\HttpFoundation\Response * * @Route("/", name="ubc_exam_main_homepage") */ public function indexAction(Request $request) { $pagination = array(); $pagerHtml = null; $q = $request->get('q'); if (!is_null($q) && !empty($q)) { // search the index QueryParser::setDefaultOperator(QueryParser::B_AND); Wildcard::setMinPrefixLength(1); $hits = $this->get('ivory_lucene_search')->getIndex('exams')->find($q . '*'); $ids = array(); foreach ($hits as $hit) { $ids[] = $hit->pk; } $ids = array_unique($ids); // search the db by ids, because we need to get the exams only visible for current user if (!empty($ids)) { // find out the current user registered courses and faculty $em = $this->getDoctrine()->getManager(); $coursesWithKeys = $request->getSession()->get('courses') ? $request->getSession()->get('courses') : array(); $courses = array_keys($coursesWithKeys); $faculties = array_values($em->getRepository('UBCExamMainBundle:SubjectFaculty')->getFacultiesByCourses($courses)); $userId = $this->get('security.authorization_checker')->isGranted('ROLE_ADMIN') ? -1 : $this->getCurrentUserId(); $qb = $this->getDoctrine()->getRepository('UBCExamMainBundle:Exam')->queryExamsByIds($ids, $userId, $faculties, $courses); $paginator = $this->get('knp_paginator'); $pagination = $paginator->paginate($qb, $request->query->get('page', 1), 20); } } return $this->render('UBCExamMainBundle:Default:index.html.twig', array('pagination' => $pagination, 'q' => $q, 'subjectCode' => '', 'subjectCodeLabel' => '')); }
protected function getIndex() { if ($this->index != null) { return $this->index; } \ZendSearch\Lucene\Search\QueryParser::setDefaultEncoding('utf-8'); \ZendSearch\Lucene\Analysis\Analyzer\Analyzer::setDefault(new \ZendSearch\Lucene\Analysis\Analyzer\Common\Utf8Num\CaseInsensitive()); \ZendSearch\Lucene\Search\QueryParser::setDefaultOperator(\ZendSearch\Lucene\Search\QueryParser::B_AND); try { $index = \ZendSearch\Lucene\Lucene::open($this->getIndexPath()); } catch (\ZendSearch\Lucene\Exception\RuntimeException $ex) { $index = \ZendSearch\Lucene\Lucene::create($this->getIndexPath()); } $this->index = $index; return $index; }
public function luceneSearchAetCommunications($index, $searchKeyWord) { \ZendSearch\Lucene\Analysis\Analyzer\Analyzer::setDefault(new \ZendSearch\Lucene\Analysis\Analyzer\Common\Text\CaseInsensitive()); $dbIds = array(); $searchValue = SearchHelper::utf8_to_ascii(mb_strtolower($searchKeyWord, "UTF-8")); $em = $this->getDoctrine()->getManager(); /* $term1 = new \ZendSearch\Lucene\Index\Term($searchValue, 'firstname'); //$subquery1 = new \ZendSearch\Lucene\Search\Query\Term($term1); $term2 = new \ZendSearch\Lucene\Index\Term($searchValue, 'title'); //$subquery2 = new \ZendSearch\Lucene\Search\Query\Term($term2); $term3 = new \ZendSearch\Lucene\Index\Term($searchValue, 'shortdesc'); //$subquery3 = new \ZendSearch\Lucene\Search\Query\Term($term3); $term4 = new \ZendSearch\Lucene\Index\Term($searchValue, 'body'); //$subquery4 = new \ZendSearch\Lucene\Search\Query\Term($term4); $term5 = new \ZendSearch\Lucene\Index\Term($searchValue, 'author'); //$subquery5 = new \ZendSearch\Lucene\Search\Query\Term($term5); $terms = array($term1, $term2, $term3, $term4, $term5); //$subqueries = array($subquery1, $subquery2, $subquery3, $subquery4, $subquery5); $signs = array(null, null, null, null, null); $termsQuery = new \ZendSearch\Lucene\Search\Query\MultiTerm($terms,$signs); */ \ZendSearch\Lucene\Search\QueryParser::setDefaultOperator(\ZendSearch\Lucene\Search\QueryParser::B_OR); $query = \ZendSearch\Lucene\Search\QueryParser::parse($searchValue, 'UTF-8'); $foundDocuments = $index->find($query); //$docNum = count($foundDocuments); foreach ($foundDocuments as $foundDoc) { $dbIds[] = $foundDoc->dbId; } $results = $em->getRepository('AetCommunicationBundle:Communication')->findById($dbIds); return $results; }
public function luceneSearchAetUsers($index, $searchKeyWord) { \ZendSearch\Lucene\Analysis\Analyzer\Analyzer::setDefault(new \ZendSearch\Lucene\Analysis\Analyzer\Common\Text\CaseInsensitive()); $dbIds = array(); $searchValue = SearchHelper::utf8_to_ascii(mb_strtolower($searchKeyWord, "UTF-8")); $em = $this->getDoctrine()->getManager(); /* $term1 = new \ZendSearch\Lucene\Index\Term($searchValue, 'firstname'); //$subquery1 = new \ZendSearch\Lucene\Search\Query\Term($term1); $term2 = new \ZendSearch\Lucene\Index\Term($searchValue, 'lastname'); //$subquery2 = new \ZendSearch\Lucene\Search\Query\Term($term2); $term3 = new \ZendSearch\Lucene\Index\Term($searchValue, 'activiteprincipale'); //$subquery3 = new \ZendSearch\Lucene\Search\Query\Term($term3); $term4 = new \ZendSearch\Lucene\Index\Term($searchValue, 'codepostal'); //$subquery4 = new \ZendSearch\Lucene\Search\Query\Term($term4); $term5 = new \ZendSearch\Lucene\Index\Term($searchValue, 'email'); //$subquery5 = new \ZendSearch\Lucene\Search\Query\Term($term5); $term6 = new \ZendSearch\Lucene\Index\Term($searchValue, 'matricule'); //$subquery6 = new \ZendSearch\Lucene\Search\Query\Term($term6); $term7 = new \ZendSearch\Lucene\Index\Term($searchValue, 'pays'); //$subquery7 = new \ZendSearch\Lucene\Search\Query\Term($term7); $term8 = new \ZendSearch\Lucene\Index\Term($searchValue, 'promotion'); //$subquery8 = new \ZendSearch\Lucene\Search\Query\Term($term8); $term9 = new \ZendSearch\Lucene\Index\Term($searchValue, 'telephone'); //$subquery9 = new \ZendSearch\Lucene\Search\Query\Term($term9); $term10 = new \ZendSearch\Lucene\Index\Term($searchValue, 'ville'); //$subquery10 = new \ZendSearch\Lucene\Search\Query\Term($term10); $term11 = new \ZendSearch\Lucene\Index\Term($searchValue, 'whoami'); //$subquery11 = new \ZendSearch\Lucene\Search\Query\Term($term11); //$subqueries = array($subquery1, $subquery2, $subquery3, $subquery4, $subquery5, $subquery6, $subquery7, $subquery8, $subquery9, $subquery10, $subquery11); $terms = array($term1, $term2, $term3, $term4, $term5, $term6, $term7, $term8, $term9, $term10, $term11); $signs = array(null, null, null, null, null, null, null, null, null, null, null); $termsQuery = new \ZendSearch\Lucene\Search\Query\MultiTerm($terms, $signs); //$boolQuery = new \ZendSearch\Lucene\Search\Query\Boolean($subqueries, $signs); */ \ZendSearch\Lucene\Search\QueryParser::setDefaultOperator(\ZendSearch\Lucene\Search\QueryParser::B_OR); $query = \ZendSearch\Lucene\Search\QueryParser::parse($searchValue, 'UTF-8'); $foundDocuments = $index->find($query); //$docNum = count($foundDocuments); foreach ($foundDocuments as $foundDoc) { $dbIds[] = $foundDoc->dbId; } $results = $em->getRepository('AetAnnuaireBundle:User')->findById($dbIds); return $results; }