使用PHP连接到Solr

时间:2012-06-10 17:35:20

标签: php solr xsd schema

我刚刚安装了Solr,我得到了默认架构。但是当我将模式从默认模式更改为更简单模式时,我无法通过php通过php连接,但仍然可以通过tomcat连接。我的PHP代码如下所示:

require_once 'Apache/Solr/Service.php';

        $solr = new Apache_Solr_Service(
        'xxx.xx.xxx.xxx',
        8080,
        '/dev.example.com/');

        if(!$solr->ping()){         
            echo 'Solr Down';
        }

我在solr中的架构

<?xml version="1.0" ?>
<schema name="testschema1" version="1.5">
  <types>
   <fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
  </types>

 <fields>
  <!-- general -->
  <field name="id"  type="string"   indexed="true"  stored="true"  multiValued="false" required="true"/>
  <field name="type"    type="string"   indexed="true"  stored="true"  multiValued="false" />
  <field name="name"    type="string"   indexed="true"  stored="true"  multiValued="false" />
  <field name="core0"   type="string"   indexed="true"  stored="true"  multiValued="false" />
 </fields>

 <!-- field to use to determine and enforce document uniqueness. -->
 <uniqueKey>id</uniqueKey>

 <!-- field for the QueryParser to use when an explicit fieldname is absent -->
 <defaultSearchField>name</defaultSearchField>

 <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
 <solrQueryParser defaultOperator="OR"/>
</schema>

当我使用java -jar start.jr

时,我也会收到此错误
SEVERE: org.apache.solr.common.SolrException: undefined field text
    at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
    at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getAnalyzer(IndexSchema.java:408)

只是为了澄清,当我将模式更改为上面的模式时,它只是不从PHP连接,solr提供的默认模式工作。我错过了一些必要的选项吗?

2 个答案:

答案 0 :(得分:2)

似乎在solrconfig.xml中多次引用了文本字段(我发现这篇文章的错误相同)。您可以更新对您选择的字段名称的引用(在您的架构中有任何意义)。

这样做可以解决这个问题。

答案 1 :(得分:1)

看起来当您尝试使用solr进行连接时,它正在寻找一个名为text的字段,该字段在您的架构中缺失。

将以下行添加到架构中,然后重试:

<field name="text" type="text" indexed="true" stored="true" multiValued="true" />