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); }
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) {
$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