【问题标题】:How add attribute to Sphinx index from scheme?如何从方案中将属性添加到 Sphinx 索引?
【发布时间】:2018-06-11 13:32:20
【问题描述】:

我使用 PHP XMLWriter:

$xmlwriter->startElement('sphinx:schema');

   $xmlwriter->startElement('spinx:attribute');
     $xmlwriter->writeAttribute("name", "path");
     $xmlwriter->writeAttribute("type", "string");
   $xmlwriter->endElement(); // attr

   $xmlwriter->startElement('sphinx:field');
      $xmlwriter->writeAttribute("name", "content");
   $xmlwriter->endElement(); // field

$xmlwriter->endElement(); // schema

$xmlwriter->startElement('sphinx:document');
   $xmlwriter->writeAttribute("id", 1);
   $xmlwriter->writeAttribute("path", "TEST_ATTRIBUTE");
   $xmlwriter->startElement("content");
      $xmlwriter->text("TEST_CONTENT");
   $xmlwriter->endElement(); // field
$xmlwriter->endElement(); // doc
$xmlwriter->endElement(); // docset

所以我得到:

<?xml version="1.0" encoding="UTF-8"?>
<sphinx:docset>
  <sphinx:schema>
    <spinx:attribute name="path" type="string"/>  - why there is '/>' not '>'?
    <sphinx:field name="content"/>
  </sphinx:schema>

  <sphinx:document id="1" path="TEST_ATTRIBUTE">
    <content>TEST_CONTENT</content>
  </sphinx:document>
</sphinx:docset>

所以我尝试: indexer --rotate --all --config /etc/sphinxsearch/sphinx.conf 狮身人面像 2.2.11-id64-release (95ae9a6) 使用配置文件'sphinx.conf'... 索引索引'test1'...

警告:属性计数为 0:切换到无 docinfo

所以我没有在索引中获得属性。

【问题讨论】:

标签: php sphinx


【解决方案1】:

好像打错字了……

$xmlwriter->startElement('spinx:attribute');
                      -----^

为什么有'/>'而不是'>'?

https://www.google.com/search?q=XML+closing+tags

每个打开的标签都必须关闭。 XML 对此很迂腐。然而, 如果标签为空(无内容),则单个标签可以同时作为 如果以 /> 而不是 > 结尾,则打开和关闭标签。 XML - Libxml2http://www.xmlsoft.org/XMLinfo.html

【讨论】:

    【解决方案2】:

    这是正确的代码!!!

    $xmlwriter = new xmlWriter();
    $xmlwriter->openMemory();
    $xmlwriter->setIndent(true);
    $xmlwriter->startDocument('1.0','UTF-8');
    $xmlwriter->startElement('sphinx:docset');
    
    $xmlwriter->startElement('sphinx:schema');
    
    $xmlwriter->startElement('sphinx:field');
       $xmlwriter->writeAttribute("name", "content");
    $xmlwriter->endElement(); // field
    
    $xmlwriter->startElement('sphinx:attr');
      $xmlwriter->writeAttribute("name", "path");
      $xmlwriter->writeAttribute("type", "string");
    $xmlwriter->endElement(); // attr
    
    $xmlwriter->endElement(); // schema
    
    $xmlwriter->startElement('sphinx:document');
        $xmlwriter->writeAttribute("id", 1);
    
      $xmlwriter->startElement("content");
        $xmlwriter->text("TEST_CONTENT2");
      $xmlwriter->endElement(); // field
    
      $xmlwriter->startElement("path");
        $xmlwriter->text("TEST_ATTRIBUTE2");
     $xmlwriter->endElement(); // field
    
    $xmlwriter->endElement(); // doc
    
    $xmlwriter->endElement(); // docset
    print $xmlwriter->outputMemory(true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2012-10-21
      • 2017-08-07
      相关资源
      最近更新 更多