本文整理汇总了PHP中Zend_Search_Lucene_Document类的典型用法代码示例。如果您正苦于以下问题:PHP Zend_Search_Lucene_Document类的具体用法?PHP Zend_Search_Lucene_Document怎么用?PHP Zend_Search_Lucene_Document使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Zend_Search_Lucene_Document类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: luceneIndexAction
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();
}
}
示例2: updateLuceneIndex
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();
}
示例3: testAddFieldMethodChaining
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...'));
}
示例4: addPageToIndex
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);
}
示例5: addDocument
/**
* 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);
}
示例6: buildplaces
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);
}
示例7: index
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 />';
}
示例8: index_lucene
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";
}
示例9: addJob
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();
}
示例10: IndexBug
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);
}
示例11: actionIndexing
/**
* 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();
}
示例12: updateIndex
/**
* 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();
}
示例13: build_index
/**
* 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));
}
}
示例14: fill_index
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 :-|
}
}
示例15: compact
$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'));