public function luceneIndexAction() { $this->view->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); $path = PUBLIC_PATH . '/tmp/lucene'; try { $index = Zend_Search_Lucene::open($path); } catch (Zend_Search_Lucene_Exception $e) { try { $index = Zend_Search_Lucene::create($path); } catch (Zend_Search_Lucene_Exception $e) { echo "Unable to open or create index : {$e->getMessage()}"; } } for ($i = 0; $i < $index->maxDoc(); $i++) { $index->delete($i); } $users = new Application_Model_User(); $users = $users->fetchAll(); foreach ($users as $_user) { Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Text('title', $_user->getFirstName())); $doc->addField(Zend_Search_Lucene_Field::keyword('empcode', $_user->getEmployeeCode())); $index->addDocument($doc); $index->commit(); $index->optimize(); } }
public function updateLuceneIndex() { //delete existing entries $index = $this->getTable()->getLuceneIndex(); // remove existing entries foreach ($index->find('pk:' . $this->getId()) as $hit) { $index->delete($hit->id); } // create new Lucene document $doc = new Zend_Search_Lucene_Document(); // store product primary key to identify it in the search results $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', $this->getId())); $tr = Doctrine::getTable('ProductTranslation')->createQuery()->from('ProductTranslation pt')->where('pt.id = ?', $this->getId())->execute(); $doc->addField(Zend_Search_Lucene_Field::UnStored('original_title', $this->getOriginalTitle(), 'utf-8')); // add fields to index depending on existing Translations foreach ($tr->toArray() as $transArr) { $lang = $transArr['lang']; unset($transArr['lang'], $transArr['id'], $transArr['volume'], $transArr['slug']); foreach ($transArr as $field => $value) { $fieldName = $field . '_' . $lang; // (name_en, name_fi), (description_en, description_fi) $doc->addField(Zend_Search_Lucene_Field::UnStored($fieldName, strip_tags($value), 'utf-8')); } } // add product to the index $index->addDocument($doc); $index->commit(); }
public function testAddFieldMethodChaining() { $document = new Zend_Search_Lucene_Document(); $this->assertTrue($document->addField(Zend_Search_Lucene_Field::Text('title', 'Title')) instanceof Zend_Search_Lucene_Document); $document = new Zend_Search_Lucene_Document(); $document->addField(Zend_Search_Lucene_Field::Text('title', 'Title'))->addField(Zend_Search_Lucene_Field::Text('annotation', 'Annotation'))->addField(Zend_Search_Lucene_Field::Text('body', 'Document body, document body, document body...')); }
public static function addPageToIndex($page, $toasterSearchIndex = false) { if (!self::initIndex()) { return false; } if ($page instanceof Application_Model_Models_Page) { $page = $page->toArray(); $containers = Application_Model_Mappers_ContainerMapper::getInstance()->findByPageId($page['id']); $page['content'] = ''; if (!empty($containers)) { foreach ($containers as $container) { $page['content'] .= $container->getContent(); } } } $document = new Zend_Search_Lucene_Document(); $document->addField(Zend_Search_Lucene_Field::keyword('pageId', $page['id'])); $document->addField(Zend_Search_Lucene_Field::unStored('metaKeyWords', $page['metaKeywords'], 'UTF-8')); $document->addField(Zend_Search_Lucene_Field::unStored('metaDescription', $page['metaDescription'], 'UTF-8')); $document->addField(Zend_Search_Lucene_Field::unStored('headerTitle', $page['headerTitle'], 'UTF-8')); $document->addField(Zend_Search_Lucene_Field::unStored('content', $page['content'], 'UTF-8')); $document->addField(Zend_Search_Lucene_Field::text('draft', $page['draft'], 'UTF-8')); $document->addField(Zend_Search_Lucene_Field::text('teaserText', $page['teaserText'], 'UTF-8')); $document->addField(Zend_Search_Lucene_Field::text('url', $page['url'], 'UTF-8')); $document->addField(Zend_Search_Lucene_Field::text('navName', $page['navName'], 'UTF-8')); $document->addField(Zend_Search_Lucene_Field::text('h1', $page['h1'], 'UTF-8')); // $document->addField(Zend_Search_Lucene_Field::text('previewImage', $page['previewImage'])); self::$_index->addDocument($document); }
/** * Adds a document to this segment. * * @param Zend_Search_Lucene_Document $document * @throws Zend_Search_Lucene_Exception */ public function addDocument(Zend_Search_Lucene_Document $document) { $storedFields = array(); $docNorms = array(); $similarity = Zend_Search_Lucene_Search_Similarity::getDefault(); foreach ($document->getFieldNames() as $fieldName) { $field = $document->getField($fieldName); $this->addField($field); if ($field->storeTermVector) { /** * @todo term vector storing support */ throw new Zend_Search_Lucene_Exception('Store term vector functionality is not supported yet.'); } if ($field->isIndexed) { if ($field->isTokenized) { $tokenList = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($field->stringValue); } else { $tokenList = array(); $tokenList[] = new Zend_Search_Lucene_Analysis_Token($field->stringValue, 0, strlen($field->stringValue)); } $docNorms[$field->name] = chr($similarity->encodeNorm($similarity->lengthNorm($field->name, count($tokenList)))); $position = 0; foreach ($tokenList as $token) { $term = new Zend_Search_Lucene_Index_Term($token->getTermText(), $field->name); $termKey = $term->key(); if (!isset($this->_termDictionary[$termKey])) { // New term $this->_termDictionary[$termKey] = $term; $this->_termDocs[$termKey] = array(); $this->_termDocs[$termKey][$this->_docCount] = array(); } else { if (!isset($this->_termDocs[$termKey][$this->_docCount])) { // Existing term, but new term entry $this->_termDocs[$termKey][$this->_docCount] = array(); } } $position += $token->getPositionIncrement(); $this->_termDocs[$termKey][$this->_docCount][] = $position; } } if ($field->isStored) { $storedFields[] = $field; } } foreach ($this->_fields as $fieldName => $field) { if (!$field->isIndexed) { continue; } if (!isset($this->_norms[$fieldName])) { $this->_norms[$fieldName] = str_repeat(chr($similarity->encodeNorm($similarity->lengthNorm($fieldName, 0))), $this->_docCount); } if (isset($docNorms[$fieldName])) { $this->_norms[$fieldName] .= $docNorms[$fieldName]; } else { $this->_norms[$fieldName] .= chr($similarity->encodeNorm($similarity->lengthNorm($fieldName, 0))); } } $this->addStoredFields($storedFields); }
public function buildplaces() { ini_set('memory_limit', '1000M'); set_time_limit(0); $time = time(); Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive()); /** * Create index */ $index = Zend_Search_Lucene::create($this->_indexPath); /** * Get all users */ $sql = $this->_db->select()->from($this->_name, array('id', 'name', 'placepic'))->limit(7500); $result = $this->_db->fetchAssoc($sql); foreach ($result as $values) { $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::keyword('placeid', $values['id'])); $doc->addField(Zend_Search_Lucene_Field::text('placename', $values['name'])); $doc->addField(Zend_Search_Lucene_Field::unStored('placepic', $values['placepic'])); $index->addDocument($doc); } $index->commit(); $elapsed = time() - $time; print_r($elapsed); }
function index() { $this->load->library('zend', 'Zend/Feed'); $this->load->library('zend', 'Zend/Search/Lucene'); $this->load->library('zend'); $this->zend->load('Zend/Feed'); $this->zend->load('Zend/Search/Lucene'); //Create index. $index = new Zend_Search_Lucene('C:\\xampp\\xampp\\htdocs\\controle_frota\\lucene\\feeds_index', true); $feeds = array('http://oglobo.globo.com/rss.xml?limite=50'); //grab each feed. foreach ($feeds as $feed) { $channel = Zend_Feed::import($feed); echo $channel->title() . '<br />'; //index each item. foreach ($channel->items as $item) { if ($item->link() && $item->title() && $item->description()) { //create an index doc. $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('link', $this->sanitize($item->link()))); $doc->addField(Zend_Search_Lucene_Field::Text('title', $this->sanitize($item->title()))); $doc->addField(Zend_Search_Lucene_Field::Unstored('contents', $this->sanitize($item->description()))); echo "\tAdding: " . $item->title() . '<br />'; $index->addDocument($doc); } } } $index->commit(); echo $index->count() . ' Documents indexed.<br />'; }
function index_lucene($article, $optimise) { $index = getIndex_lucene(); $term = new Zend_Search_Lucene_Index_Term($article["PMID"], 'PMID'); // a pre-existing page cannot be updated, it has to be // deleted, and indexed again: $exactSearchQuery = new Zend_Search_Lucene_Search_Query_Term($term); $hits = $index->find($exactSearchQuery); if (count($hits) > 0) { echo "[deleting previous version]\n"; foreach ($hits as $hit) { $index->delete($hit->id); } } $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('PMID', $article["PMID"])); $doc->addField(Zend_Search_Lucene_Field::Keyword('Year', $article["Year"])); $doc->addField(Zend_Search_Lucene_Field::Keyword('Journal', $article["Journal"])); $doc->addField(Zend_Search_Lucene_Field::Text('Title', $article["Title"], 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::Text('Authors', $article["Authors"], 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::Text('Reference', $article["Reference"], 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::UnStored('Abstract', $article["Abstract"], 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::Text('MeshHeadings', $article["MeshHeadings"], 'utf-8')); $index->addDocument($doc); if ($optimise) { echo "Optimising index\n"; $index->optimize(); } $index->commit(); echo "The index contains " . $index->numDocs() . " documents\n"; }
public function addJob($jobData) { if (!$this->_enabled) { return false; } // Delete old job with the same id from index $term = new Zend_Search_Lucene_Index_Term($jobData['id'], 'id'); $hits = $this->_index->termDocs($term); if (count($hits)) { foreach ($hits as $hit) { $this->_index->delete($hit->id); } } // Add the job now $job = new Zend_Search_Lucene_Document(); $job->addField(Zend_Search_Lucene_Field::Keyword('DocumentType', 'job', 'utf-8')); $job->addField(Zend_Search_Lucene_Field::Keyword('id', $jobData['id'], 'utf-8')); $job->addField(Zend_Search_Lucene_Field::Text('title', $jobData['title'], 'utf-8')); $job->addField(Zend_Search_Lucene_Field::Text('description', $jobData['description'], 'utf-8')); $job->addField(Zend_Search_Lucene_Field::Text('company', $jobData['company'], 'utf-8')); $job->addField(Zend_Search_Lucene_Field::Keyword('categoryid', $jobData['categoryid'], 'utf-8')); $job->addField(Zend_Search_Lucene_Field::Text('location', $jobData['location'], 'utf-8')); $this->_index->addDocument($job); $this->_index->commit(); }
public function IndexBug($bug) { $this->RemoveBug($bug->bug_id); $doc = new Zend_Search_Lucene_Document(); $doc->AddField(Zend_Search_Lucene_Field::Keyword('bug_id', $bug->bug_id)); $doc->AddField(Zend_Search_Lucene_Field::Text('title', $bug->title)); $doc->AddField(Zend_Search_Lucene_Field::Keyword('reporting_user_id', $bug->reporting_user_id)); $doc->AddField(Zend_Search_Lucene_Field::Keyword('reporting_date', $bug->reporting_date)); // We concatenate all comments into a single text blob. We only show // hits as bugs, but we want comment content to matter. $comment_blob = ''; $stmt = Bugdar::$db->Prepare("SELECT body FROM " . TABLE_PREFIX . "comments WHERE bug_id = ? ORDER BY comment_id"); $stmt->Execute(array($bug->bug_id)); while ($comment = $stmt->FetchObject()) { $comment_blob .= $comment->body . "\n\n"; } $doc->AddField(Zend_Search_Lucene_Field::UnStored('comments', $comment_blob)); // Add all attributes. $stmt = Bugdar::$db->Prepare("SELECT * FROM " . TABLE_PREFIX . "bug_attributes WHERE bug_id = ?"); $stmt->Execute(array($bug->bug_id)); $tags = array(); while ($attr = $stmt->FetchObject()) { if ($attr->attribute_title) { $doc->AddField(Zend_Search_Lucene_Field::Keyword($attr->attribute_title, $attr->value)); } else { $tags[] = $attr->value; } } $doc->AddField(Zend_Search_Lucene_Field::Text('tag', implode(' ', $tags))); $this->lucene->AddDocument($doc); }
/** * This is the default 'index' action that is invoked * when an action is not explicitly requested by users. */ public function actionIndexing() { ini_set('max_execution_time', 0); ob_start(); $index = new Zend_Search_Lucene(Yii::getPathOfAlias($this->_indexFilesPath), true); $criteria = new CDbCriteria(); $criteria->compare('t.publish', 1); $criteria->order = 'album_id DESC'; //$criteria->limit = 10; $model = Albums::model()->findAll($criteria); foreach ($model as $key => $item) { if ($item->media_id != 0) { $images = Yii::app()->request->baseUrl . '/public/album/' . $item->album_id . '/' . $item->cover->media; } else { $images = ''; } $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('id', CHtml::encode($item->album_id), 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::Text('media', CHtml::encode($images), 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::Text('title', CHtml::encode($item->title), 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::Text('body', CHtml::encode(Utility::hardDecode(Utility::softDecode($item->body))), 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::Text('url', CHtml::encode(Utility::getProtocol() . '://' . Yii::app()->request->serverName . Yii::app()->createUrl('album/site/view', array('id' => $item->album_id, 't' => Utility::getUrlTitle($item->title)))), 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('date', CHtml::encode(Utility::dateFormat($item->creation_date, true) . ' WIB'), 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('creation', CHtml::encode($item->user->displayname), 'utf-8')); $index->addDocument($doc); } echo 'Album Lucene index created'; $index->commit(); $this->redirect(Yii::app()->createUrl('article/search/indexing')); ob_end_flush(); }
/** * Updates the index for an object * * @param Doctrine_Record $object */ public function updateIndex(Doctrine_Record $object, $delete = false) { /* error checking */ if (!array_key_exists('models', $this->config) || empty($this->config['models'])) { throw new Exception(sprintf('No models set in search.yml', $name)); } if (!array_key_exists($model = get_class($object), $this->config['models'])) { throw new Exception(sprintf('Model "%s" not defined in "%s" index in your search.yml', $model, $this->name)); } $id = $this->generateId($object->getId(), $model); $config = $this->config['models'][$model]; //delete existing entries foreach ($this->search('_id:"' . $id . '"') as $hit) { $this->getIndex()->delete($hit->id); } if ($delete) { return; } //only add to search if canSearch method on model returns true (search if no method exists) if (method_exists($object, 'canSearch')) { if (!call_user_func(array($object, 'canSearch'))) { return; } } $doc = new Zend_Search_Lucene_Document(); // store a key for deleting in future $doc->addField(Zend_Search_Lucene_Field::Keyword('_id', $id)); // store job primary key and model name to identify it in the search results $doc->addField(Zend_Search_Lucene_Field::Keyword('_pk', $object->getId())); $doc->addField(Zend_Search_Lucene_Field::Keyword('_model', $model)); // store title - used for search result title if (!array_key_exists('title', $config)) { throw new Exception(sprintf('A title must be set for model "%s" in search.yml', $model)); } $doc->addField(Zend_Search_Lucene_Field::unIndexed('_title', call_user_func(array($object, 'get' . sfInflector::camelize($config['title']))))); // store description - used for search result description if (!array_key_exists('description', $config)) { throw new Exception(sprintf('A description must be set for model "%s" in search.yml', $model)); } $doc->addField(Zend_Search_Lucene_Field::unIndexed('_description', call_user_func(array($object, 'get' . sfInflector::camelize($config['description']))))); // store url - @todo add more routing options if (!array_key_exists('route', $config)) { throw new Exception(sprintf('A route must be set for model "%s" in search.yml', $model)); } sfContext::getInstance()->getConfiguration()->loadHelpers('Url'); $url = url_for($config['route'], $object); $doc->addField(Zend_Search_Lucene_Field::unIndexed('_url', $url)); //store fields if (array_key_exists('fields', $config)) { foreach ($config['fields'] as $field => $config) { $doc->addField(Zend_Search_Lucene_Field::UnStored($field, call_user_func(array($object, 'get' . sfInflector::camelize($field))), 'utf-8')); } } //save index $this->getIndex()->addDocument($doc); $this->getIndex()->commit(); }
/** * rebuild the index * * @access public * @return void */ function build_index() { $index = $this->__open(true); $index->setMergeFactor(2000); $index->setMaxBufferedDocs(500); $start = time(); foreach ($this->settings as $model => $model_options) { App::import('Model', $model); $model = new $model(); if (empty($model_options['find_options'])) { $model_options['find_options'] = array(); } if (method_exists($model, 'find_index')) { $results = $model->find_index('all', $model_options['find_options']); } else { $results = $model->find('all', $model_options['find_options']); } if (Configure::read()) { $this->log($model->name . ' find time: ' . (time() - $start), 'searchable'); $start = time(); } $count = count($results); $i = 1; foreach ($results as $result) { printf("%.1f", $i / $count * 100); $this->out(""); $i++; $this->out('Processing ' . $model->name . ' #' . $result[$model->name]['id']); $doc = new Zend_Search_Lucene_Document(); // add the model field $doc->addField(Zend_Search_Lucene_Field::Keyword('cake_model', $model->name, 'utf-8')); foreach ($model_options['fields'] as $field_name => $options) { if (!empty($options['prepare']) && function_exists($options['prepare'])) { $result[$model->name][$field_name] = call_user_func($options['prepare'], $result[$model->name][$field_name]); } $alias = !empty($options['alias']) ? $options['alias'] : $field_name; $doc->addField(Zend_Search_Lucene_Field::$options['type']($alias, $result[$model->name][$field_name], 'utf-8')); } $index->addDocument($doc); $this->out('Processed ' . $model->name . ' #' . $result[$model->name]['id']); } if (Configure::read()) { $this->log($model->name . ' adding time: ' . (time() - $start), 'searchable'); $start = time(); } } $this->optimize($index); $index->commit(); if (Configure::read()) { $this->log('Optimize+commit time: ' . (time() - $start)); } }
function fill_index() { for ($i = 0; $i < 10; $i++) { $index = new Zend_Search_Lucene('./data/index', true); $index->find("test"); $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Text("test", getword())); $doc->addField(Zend_Search_Lucene_Field::UnStored("contents", getword())); $index->addDocument($doc); $index->commit(); $index->getDirectory()->close(); //comment this to see another bug :-| } }
$results = $index->find($term); $query = Zend_Search_Lucene_Search_QueryParser::parse($term); $this->render('/sParameter/search', compact('results', 'term', 'query')); } } /** * Search index creation */ public function actionCreate() { $index = new Zend_Search_Lucene(Yii::getPathOfAlias('application.' . $this->_indexFiles), true); $posts = tAccount::model()->findAll(); foreach ($posts as $post) { $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Text('account_no', CHtml::encode($post->account_no), 'utf-8'));
/** * This method is called before the first test of this test class is run. * * Build a temporary index with a couple of documents */ public static function setUpBeforeClass() { // ensure no index exist system(sprintf("rm -rf %s", self::indexDir())); // create the index $index = Zend_Search_Lucene::create(self::indexDir()); // add some documents for ($i = 0; $i < 3; $i++) { $document = new Zend_Search_Lucene_Document(); $document->addField(Zend_Search_Lucene_Field::text('title', "foo bar baz {$i}")); $document->addField(Zend_Search_Lucene_Field::text('content', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc pharetra laoreet sodales. Aenean consequat ornare aliquam. Etiam vestibulum ultrices elit nec vestibulum')); $index->addDocument($document); } $index->commit(); }
/** * Construct a Zend_Search_Lucene_Document object out of an announcement db row. * * @global string $urlServer * @param object $announce * @return Zend_Search_Lucene_Document */ protected function makeDoc($announce) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'announce_' . $announce->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $announce->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'announce', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $announce->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($announce->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics(strip_tags($announce->content)), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('visible', $announce->visible, $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/announcements/index.php?course=' . course_id_to_code($announce->course_id) . '&an_id=' . $announce->id, $encoding)); return $doc; }
/** * Construct a Zend_Search_Lucene_Document object out of an exercise db row. * * @global string $urlServer * @param object $exercise * @return Zend_Search_Lucene_Document */ protected function makeDoc($exercise) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'exercise_' . $exercise->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $exercise->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'exercise', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $exercise->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($exercise->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics(strip_tags($exercise->description)), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('visible', $exercise->active, $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/exercise/exercise_submit.php?course=' . course_id_to_code($exercise->course_id) . '&exerciseId=' . $exercise->id, $encoding)); return $doc; }
public function addFeed(Feed $feed) { $index = Zend_Search_Lucene::open(Zend_Registry::getInstance()->search->feed); $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Text('title', $feed->title)); $doc->addField(Zend_Search_Lucene_Field::Text('siteUrl', $feed->siteUrl)); $doc->addField(Zend_Search_Lucene_Field::Text('feedUrl', $feed->url)); $doc->addField(Zend_Search_Lucene_Field::Text('language', $feed->language)); $doc->addField(Zend_Search_Lucene_Field::Text('category', $feed->category)); $doc->addField(Zend_Search_Lucene_Field::Text('title', $feed->title)); $doc->addField(Zend_Search_Lucene_Field::UnStored('description', $feed->description)); $index->addDocument($doc); }
/** * Construct a Zend_Search_Lucene_Document object out of a link db row. * * @global string $urlServer * @param object $link * @return Zend_Search_Lucene_Document */ protected function makeDoc($link) { $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'link_' . $link->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $link->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'link', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $link->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($link->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics(strip_tags($link->description)), $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $link->url, $encoding)); return $doc; }
public function buildAction() { // create the index $index = Zend_Search_Lucene::create(APPLICATION_PATH . '/indexes'); // fetch all of the current pages $mdlPage = new Model_Page(); $currentPages = $mdlPage->fetchAll(); if ($currentPages->count() > 0) { // create a new search document for each page foreach ($currentPages as $p) { $page = new CMS_Content_Item_Page($p->id); $doc = new Zend_Search_Lucene_Document(); // you use an unindexed field for the id because you want the id to be // included in the search results but not searchable $doc->addField(Zend_Search_Lucene_Field::unIndexed('page_id', $page->id)); // you use text fields here because you want the content to be searchable // and to be returned in search results $doc->addField(Zend_Search_Lucene_Field::text('page_name', $page->name)); $doc->addField(Zend_Search_Lucene_Field::text('page_headline', $page->headline)); $doc->addField(Zend_Search_Lucene_Field::text('page_description', $page->description)); $doc->addField(Zend_Search_Lucene_Field::text('page_content', $page->content)); // add the document to the index $index->addDocument($doc); } } // optimize the index $index->optimize(); // pass the view data for reporting $this->view->indexSize = $index->numDocs(); }
public static function indexationAdd($indexationData) { $directory = Zend_Registry::get('lucene_index'); Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8()); $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pageID', $indexationData['pageID'])); $doc->addField(Zend_Search_Lucene_Field::Keyword('moduleID', $indexationData['moduleID'])); $doc->addField(Zend_Search_Lucene_Field::Keyword('contentID', $indexationData['contentID'])); $doc->addField(Zend_Search_Lucene_Field::Keyword('languageID', $indexationData['languageID'])); $doc->addField(Zend_Search_Lucene_Field::Text('title', Cible_FunctionsGeneral::html2text($indexationData['title']))); $doc->addField(Zend_Search_Lucene_Field::Text('text', Cible_FunctionsGeneral::html2text($indexationData['text']))); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('link', $indexationData['link'])); $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', strtolower(Cible_FunctionsGeneral::removeAccents(Cible_FunctionsGeneral::html2text($indexationData['contents']))))); $newIndex = !is_dir($directory); $index = new Zend_Search_Lucene($directory, $newIndex); $index->addDocument($doc); $index->commit(); }
function update_search_index_doc(&$index) { $p =& get_cached_table("person"); $personID = $this->get_value("personID"); $person_field = $personID . " " . $p[$personID]["username"] . " " . $p[$personID]["name"]; $itemModifiedUser = $this->get_value("itemModifiedUser"); $itemModifiedUser_field = $itemModifiedUser . " " . $p[$itemModifiedUser]["username"] . " " . $p[$itemModifiedUser]["name"]; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('id', $this->get_id())); $doc->addField(Zend_Search_Lucene_Field::Text('name', $this->get_value("itemName"), "utf-8")); $doc->addField(Zend_Search_Lucene_Field::Text('desc', $this->get_value("itemNotes"), "utf-8")); $doc->addField(Zend_Search_Lucene_Field::Text('type', $this->get_value("itemType"), "utf-8")); $doc->addField(Zend_Search_Lucene_Field::Text('author', $this->get_value("itemAuthor"), "utf-8")); $doc->addField(Zend_Search_Lucene_Field::Text('creator', $person_field, "utf-8")); $doc->addField(Zend_Search_Lucene_Field::Text('modifier', $itemModifiedUser_field, "utf-8")); $doc->addField(Zend_Search_Lucene_Field::Text('dateModified', str_replace("-", "", $this->get_value("itemModifiedTime")), "utf-8")); $index->addDocument($doc); }
public function updateLuceneIndex() { //delete existing entries $index = $this->getTable()->getLuceneIndex(); // remove existing entries foreach ($index->find('pk:' . $this->getId()) as $hit) { $index->delete($hit->id); } // create new Lucene document $doc = new Zend_Search_Lucene_Document(); // store product primary key to identify it in the search results $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', $this->getId())); $doc->addField(Zend_Search_Lucene_Field::UnStored('description', $this->getDescription(), 'utf-8')); $doc->addField(Zend_Search_Lucene_Field::UnStored('content', strip_tags($this->getContent()), 'utf-8')); // add product to the index $index->addDocument($doc); $index->commit(); }
/** * Construct a Zend_Search_Lucene_Document object out of a note db row. * * @global string $urlServer * @param object $note * @return Zend_Search_Lucene_Document */ protected function makeDoc($note) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'note_' . $note->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $note->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'note', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('userid', $note->user_id, $encoding)); if(isset($note->course_id)){ $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $note->course_id, $encoding)); } $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($note->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics(strip_tags($note->content)), $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/notes/index.php?an_id=' . $note->id, $encoding)); return $doc; }
/** * Construct a Zend_Search_Lucene_Document object out of a video db row. * * @global string $urlServer * @param object $video * @return Zend_Search_Lucene_Document */ protected function makeDoc($video) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'video_' . $video->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $video->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'video', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $video->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($video->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics($video->description), $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/video/file.php?course=' . course_id_to_code($video->course_id) . '&id=' . $video->id, $encoding)); return $doc; }
function searchImportFragment($fragment, $index) { if ($fragment->getType() != "text") { return; } $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::text('uri', $fragment->getUri(), INDEX_CHARSET)); $doc->addField(Zend_Search_Lucene_Field::text('user', $fragment->getCreatorId(), INDEX_CHARSET)); $doc->addField(Zend_Search_Lucene_Field::text('created', $fragment->getCreateDate(), INDEX_CHARSET)); $doc->addField(Zend_Search_Lucene_Field::text('modified', $fragment->getModifyDate(), INDEX_CHARSET)); $doc->addField(Zend_Search_Lucene_Field::text('title', $fragment->getTitle(), INDEX_CHARSET)); $doc->addField(Zend_Search_Lucene_Field::text('content', $fragment->getSaveContent(), INDEX_CHARSET)); $doc->addField(Zend_Search_Lucene_Field::text('searchtext', $fragment->getTitle() . " " . $fragment->getContent(), INDEX_CHARSET)); $ret = $index->addDocument($doc); }
/** * Construct a Zend_Search_Lucene_Document object out of a forum topic db row. * * @global string $urlServer * @param object $ftopic * @return Zend_Search_Lucene_Document */ protected function makeDoc($ftopic) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'ftopic_' . $ftopic->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $ftopic->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'ftopic', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $ftopic->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('forumid', $ftopic->forum_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($ftopic->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/forum/viewforum.php?course=' . course_id_to_code($ftopic->course_id) . '&forum=' . intval($ftopic->forum_id), $encoding)); return $doc; }
static function AddToIndex(SearchableObject $object, $commitOnEnd = true) { $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('combinedid', $object->getRelObjectManager() . $object->getRelObjectId())); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('objectid', $object->getRelObjectId())); $doc->addField(Zend_Search_Lucene_Field::Keyword('manager', $object->getRelObjectManager())); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('column', $object->getColumnName())); $doc->addField(Zend_Search_Lucene_Field::UnStored('text', $object->getContent())); $doc->addField(Zend_Search_Lucene_Field::Text('workspaces', "ws" . $object->getProjectId() . " ")); $doc->addField(Zend_Search_Lucene_Field::Text('isprivate', ($object->getIsPrivate() ? '1' : '0') . " ")); self::GetIndex()->addDocument($doc); if ($commitOnEnd) { self::GetIndex()->commit(); } return true; }
/** * Add document into zend search index * * @param array $indexarr * @param object $search_index * @param string $doc * @return void * @author Andy Bennett */ private function add_new_zend_search_document($indexarr, $search_index, $doc) { $ser = new Zend_Search_Lucene_Document(); foreach ($indexarr as $arri) { $type = $arri['type']; $v = $arri['value']; $value = $doc->{$v}; $ser->addField(Zend_Search_Lucene_Field::$type($arri['field'], $value)); } $search_index->addDocument($ser); }