本文整理汇总了PHP中Zend_Search_Lucene_Field::Keyword方法的典型用法代码示例。如果您正苦于以下问题:PHP Zend_Search_Lucene_Field::Keyword方法的具体用法?PHP Zend_Search_Lucene_Field::Keyword怎么用?PHP Zend_Search_Lucene_Field::Keyword使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zend_Search_Lucene_Field
的用法示例。
在下文中一共展示了Zend_Search_Lucene_Field::Keyword方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: 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 />';
}
示例2: __construct
private function __construct($rule, $additional, $storeContent)
{
/*$dom = new DOMDocument ();
$dom->preserveWhiteSpace = false;
$dom->loadXML ( $rule );*/
//walk through the association rule and index it
//$this->_parse ( $rule, 1 );
$quantifiers = $rule->childNodes;
foreach ($quantifiers as $quantifier) {
if ($quantifier->nodeName == '#text' || $quantifier->nodeValue == '') {
continue;
}
//print $quantifier->nodeName.' : '. trim($quantifier->nodeValue).'<br/>';
$val = trim($quantifier->nodeValue);
if (is_numeric($val)) {
$val = JuceneHelper::prepareNumber($val);
} else {
$val = (string) $val;
$val = str_replace("-", "", $val);
}
if ($quantifier->nodeName == 'Text') {
$type = 'Unindexed';
} else {
$type = 'Text';
}
$this->addField(Zend_Search_Lucene_Field::$type($quantifier->nodeName, $val, JUCENE_ENCODING));
}
foreach ($additional as $field => $value) {
if (is_numeric($value)) {
$val = JuceneHelper::prepareNumber($value);
}
$this->addField(Zend_Search_Lucene_Field::Keyword('service_' . $field, $value, JUCENE_ENCODING));
}
}
示例3: 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);
}
示例4: 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();
}
示例5: edit
public function edit($needFields = array(), $data = array(), $charset = 'UTF-8')
{
$index = new Zend_Search_Lucene(ZY_ROOT . '/index');
$doc = new Zend_Search_Lucene_Document();
foreach ($needFields as $key => $field) {
switch ($field) {
case 'keywords':
$doc->addField(Zend_Search_Lucene_Field::Keyword($key, $data[$key], $charset));
break;
case 'text':
$doc->addField(Zend_Search_Lucene_Field::Text($key, $data[$key], $charset));
break;
case 'unindexed':
$doc->addField(Zend_Search_Lucene_Field::unindexed($key, $data[$key], $charset));
break;
default:
$doc->addField(Zend_Search_Lucene_Field::$field($key, $data[$key], $charset));
break;
}
}
$index->addDocument($doc);
$index->commit();
$index->optimize();
return TRUE;
}
示例6: 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";
}
示例7: update
public static function update($data)
{
try {
//Update an index.
$index = Zend_Search_Lucene::open('../application/searchindex');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive());
} catch (Zend_Search_Exception $e) {
throw $e;
}
// remove an existing entry
$hits = $index->find('pk:' . $data['pk']);
foreach ($hits as $hit) {
$index->delete($hit->id);
}
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Keyword('pk', $data['pk']));
$doc->addField(Zend_Search_Lucene_Field::Keyword('code', $data['code'], 'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::Keyword('u_code', strtolower($data['code']), 'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::unIndexed('type', $data['type'], 'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::unIndexed('id', $data['id'], 'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::Text('title', $data['title'], 'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::Text('en_title', Default_Model_Functions::convert_vi_to_en($data['title']), 'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::Text('description', $data['description'], 'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::Text('en_description', Default_Model_Functions::convert_vi_to_en($data['description']), 'UTF-8'));
$index->addDocument($doc);
$index->commit();
}
示例8: makeDoc
/**
* Construct a Zend_Search_Lucene_Document object out of a document db row.
*
* @global string $urlServer
* @param object $docu
* @return Zend_Search_Lucene_Document
*/
protected function makeDoc($docu) {
global $urlServer;
$encoding = 'utf-8';
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'doc_' . $docu->id, $encoding));
$doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $docu->id, $encoding));
$doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'doc', $encoding));
$doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $docu->course_id, $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($docu->title), $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics($docu->description), $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('filename', Indexer::phonetics($docu->filename), $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('comment', Indexer::phonetics($docu->comment), $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('creator', Indexer::phonetics($docu->creator), $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('subject', Indexer::phonetics($docu->subject), $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('author', Indexer::phonetics($docu->author), $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('visible', $docu->visible, $encoding));
$doc->addField(Zend_Search_Lucene_Field::Text('public', $docu->public, $encoding));
$urlAction = ($docu->format == '.dir') ? 'openDir' : 'download';
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer
. 'modules/document/index.php?course=' . course_id_to_code($docu->course_id)
. '&' . $urlAction . '=' . $docu->path, $encoding));
return $doc;
}
示例9: __construct
/**
* Constructor. Creates our indexable document and adds all
* necessary fields to it using the passed in document
*/
public function __construct($document)
{
$this->addField(Zend_Search_Lucene_Field::UnIndexed('id_entry', $document->getId()));
$this->addField(Zend_Search_Lucene_Field::Keyword('url', $document->getUrl()));
$this->addField(Zend_Search_Lucene_Field::UnIndexed('creation_date', $document->getCreationDate()));
$this->addField(Zend_Search_Lucene_Field::Text('name', $document->getName()), 'utf-8');
$this->addField(Zend_Search_Lucene_Field::Text('content', $document->getDetails()));
$this->addField(Zend_Search_Lucene_Field::Text('tag', $document->getImplodedTags()));
}
示例10: 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();
}
示例11: insertFromDB
public function insertFromDB($since)
{
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Keyword('id', $row['id']));
$doc->addField(Zend_Search_Lucene_Field::Keyword('person', $row['person']));
$doc->addField(Zend_Search_Lucene_Field::Text('celeb_type', $row['celeb_type']));
$doc->addField(Zend_Search_Lucene_Field::Text('wikikeyword', $row['wikikeyword']));
$doc->addField(Zend_Search_Lucene_Field::Text('blurb', $row['blurb']));
$this->search->addDocument($doc);
}
示例12: index
/**
* Index entity of document with given id.
*
* @param Mage_Core_Model_Abstract
*
* @return Mage_Lucene_Model_Index_Document_Abstract
**/
public function index($sourceModel)
{
$this->_sourceModel = $sourceModel;
$this->_id = $sourceModel->getId();
$this->delete();
$this->addField(Zend_Search_Lucene_Field::Keyword('doctype', $this->getDoctype()));
$this->addField(Zend_Search_Lucene_Field::Keyword('entity_id', $this->_id));
$this->addField(Zend_Search_Lucene_Field::Keyword(self::STORE_ATTRIBUTE_CODE, $this->getStore()->getId()));
$this->addAttributes();
$this->addDocument();
return $this;
}
示例13: testKeyword
public function testKeyword()
{
$field = Zend_Search_Lucene_Field::Keyword('field', 'value');
$this->assertEquals($field->boost, 1);
$this->assertEquals($field->encoding, '');
$this->assertEquals($field->isBinary, false);
$this->assertEquals($field->isIndexed, true);
$this->assertEquals($field->isStored, true);
$this->assertEquals($field->isTokenized, false);
$this->assertEquals($field->name, 'field');
$this->assertEquals($field->value, 'value');
}
示例14: 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));
}
}
示例15: __construct
public function __construct(&$doc, &$data, $course_id, $group_id, $user_id, $path, $additional_keyset = null)
{
$encoding = 'UTF-8';
//document identification and indexing
$this->addField(Zend_Search_Lucene_Field::Keyword('docid', $doc->docid, $encoding));
//document type : the name of the Moodle element that manages it
$this->addField(Zend_Search_Lucene_Field::Keyword('doctype', $doc->documenttype, $encoding));
//allows subclassing information from complex modules.
$this->addField(Zend_Search_Lucene_Field::Keyword('itemtype', $doc->itemtype, $encoding));
//caches the course context.
$this->addField(Zend_Search_Lucene_Field::Keyword('course_id', $course_id, $encoding));
//caches the originator's group.
$this->addField(Zend_Search_Lucene_Field::Keyword('group_id', $group_id, $encoding));
//caches the originator if any
$this->addField(Zend_Search_Lucene_Field::Keyword('user_id', $user_id, $encoding));
// caches the context of this information. i-e, the context in which this information
// is being produced/attached. Speeds up the "check for access" process as context in
// which the information resides (a course, a module, a block, the site) is stable.
$this->addField(Zend_Search_Lucene_Field::UnIndexed('context_id', $doc->contextid, $encoding));
//data for document
$this->addField(Zend_Search_Lucene_Field::Text('title', $doc->title, $encoding));
$this->addField(Zend_Search_Lucene_Field::Text('author', $doc->author, $encoding));
$this->addField(Zend_Search_Lucene_Field::UnStored('contents', $doc->contents, $encoding));
$this->addField(Zend_Search_Lucene_Field::UnIndexed('url', $doc->url, $encoding));
$this->addField(Zend_Search_Lucene_Field::UnIndexed('date', $doc->date, $encoding));
//additional data added on a per-module basis
$this->addField(Zend_Search_Lucene_Field::Binary('data', serialize($data)));
// adding a path allows the document to know where to find specific library calls
// for checking access to a module or block content. The Lucene records should only
// be responsible to bring back to that call sufficient and consistent information
// in order to perform the check.
$this->addField(Zend_Search_Lucene_Field::UnIndexed('path', $path, $encoding));
/*
// adding a capability set required for viewing. -1 if no capability required.
// the capability required for viewing is depending on the local situation
// of the document. each module should provide this information when pushing
// out search document structure. Although capability model should be kept flat
// there is no exclusion some module or block developpers use logical combinations
// of multiple capabilities in their code. This possibility should be left open here.
$this->addField(Zend_Search_Lucene_Field::UnIndexed('capabilities', $caps));
*/
/*
// Additional key set allows a module to ask for extensible criteria based search
// depending on the module internal needs.
*/
if (!empty($additional_keyset)) {
foreach ($additional_keyset as $keyname => $keyvalue) {
$this->addField(Zend_Search_Lucene_Field::Keyword($keyname, $keyvalue, $encoding));
}
}
}