Exemplo n.º 1
0
 public function testGetFieldBody()
 {
     $xs3 = new XS("[pid]\ntype=id");
     $this->assertFalse($xs3->getFieldBody());
     // xs1
     $f = $this->xs1->getFieldBody();
     $this->assertEquals('message', $f->name);
     $this->assertEquals(XSFieldMeta::TYPE_BODY, $f->type);
     $this->assertFalse($f->isBoolIndex());
     $this->assertTrue($f->hasIndexSelf());
     $this->assertFalse($f->hasIndexMixed());
     $this->assertEquals(1, $f->weight);
     $this->assertEquals(300, $f->cutlen);
     $this->assertFalse($f->hasCustomTokenizer());
     $this->assertTrue($f->isSpeical());
     $this->assertTrue($f->withPos());
     $this->assertFalse($f->isNumeric());
     $this->assertEquals(XSFieldScheme::MIXED_VNO, $f->vno);
     // xs2
     $f = $this->xs2->getFieldBody();
     $this->assertEquals('message', $f->name);
     $this->assertEquals(XSFieldMeta::TYPE_BODY, $f->type);
     $this->assertFalse($f->isBoolIndex());
     $this->assertTrue($f->hasIndexSelf());
     $this->assertFalse($f->hasIndexMixed());
     $this->assertEquals(1, $f->weight);
     $this->assertEquals(100, $f->cutlen);
     $this->assertFalse($f->hasCustomTokenizer());
     $this->assertTrue($f->isSpeical());
     $this->assertTrue($f->withPos());
     $this->assertFalse($f->isNumeric());
     $this->assertEquals(XSFieldScheme::MIXED_VNO, $f->vno);
 }
Exemplo n.º 2
0
 if ($vars['@charset@'] !== 'GB2312' && $vars['@charset@'] !== 'GBK') {
     $vars['@charset@'] = 'UTF-8';
 }
 $vars['@xs_lib_root@'] = XS_LIB_ROOT;
 $vars['@date_time@'] = date('Y-m-d H:i:s');
 $vars['@project_name@'] = ucfirst($xs->name);
 $vars['@package_name@'] = PACKAGE_NAME;
 $vars['@package_version@'] = PACKAGE_VERSION;
 // fields
 $vars['@set_filter@'] = '';
 $vars['@set_sort@'] = '';
 $vars['@field_id@'] = $xs->getFieldId()->name;
 if (($field = $xs->getFieldTitle()) !== false) {
     $vars['@field_title@'] = $field->name;
 }
 if (($field = $xs->getFieldBody()) !== false) {
     $vars['@field_body@'] = $field->name;
 }
 $vars['@field_info@'] = '';
 foreach ($xs->getAllFields() as $field) {
     if ($field->hasIndexSelf() && $field->type != XSFieldMeta::TYPE_BODY && !$field->isBoolIndex()) {
         $vars['@set_filter@'] .= "\t\t\t<label class=\"radio inline\"><input type=\"radio\" name=\"f\" value=\"{$field->name}\" <?php echo \$f_{$field->name}; ?> />" . ucfirst($field->name) . "</label>\n";
     }
     if ($field->isNumeric()) {
         $vars['@set_sort@'] .= "\t\t\t\t\t<option value=\"" . $field->name . "_DESC\" <?php echo \$s_{$field->name}_DESC; ?>>" . ucfirst($field->name) . "从大到小</option>\n";
         $vars['@set_sort@'] .= "\t\t\t\t\t<option value=\"" . $field->name . "_ASC\" <?php echo \$s_{$field->name}_ASC; ?>>" . ucfirst($field->name) . "从小到大</option>\n";
     }
     if ($field->isSpeical()) {
         continue;
     }
     if ($field->type == XSFieldMeta::TYPE_STRING) {
Exemplo n.º 3
0
         $tmp = trim($tmp);
         if ($tmp === '') {
             continue;
         }
         if (substr($tmp, 0, 1) === '~') {
             $fields[substr($tmp, 1)] = false;
         } else {
             $fields[$tmp] = true;
         }
     }
     $search->setMultiSort($fields);
 }
 // special fields
 $fid = $xs->getFieldId();
 $ftitle = $xs->getFieldTitle();
 $fbody = $xs->getFieldBody();
 if ($fbody) {
     $xs->getFieldBody()->cutlen = 100;
 }
 // add range
 $ranges = array();
 if (strpos($query, '..') !== false) {
     $regex = '/(\\S+?):(\\S*?)\\.\\.(\\S*)/';
     if (preg_match_all($regex, $query, $matches) > 0) {
         for ($i = 0; $i < count($matches[0]); $i++) {
             $ranges[] = array($matches[1][$i], $matches[2][$i] === '' ? null : $matches[2][$i], $matches[3][$i] === '' ? null : $matches[3][$i]);
             $query = str_replace($matches[0][$i], '', $query);
         }
     }
 }
 // set query