1

我刚刚安装了 Solr,我得到了默认模式。但是当我将模式从默认更改为更简单的模式时,我无法通过 php 通过 solr 进行连接,但仍然可以通过 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 提供的默认架构有效。我错过了一些必需的选项吗?

4

2 回答 2

2

似乎在 solrconfig.xml 中多次引用了文本字段(我通过相同的错误找到了这篇文章)。您可以将这些引用更新为您选择的字段名称(无论在您的架构中是否有意义)。

这样做为我解决了这个问题。

于 2012-08-09T15:50:29.413 回答
1

看起来当您尝试与 solr 连接时,它正在寻找一个名为的字段,该字段text从您的架构中丢失。

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

<field name="text" type="text" indexed="true" stored="true" multiValued="true" />
于 2012-06-10T18:54:21.233 回答