我刚刚安装了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提供的默认模式工作。我错过了一些必要的选项吗?
答案 0 :(得分:2)
似乎在solrconfig.xml中多次引用了文本字段(我发现这篇文章的错误相同)。您可以更新对您选择的字段名称的引用(在您的架构中有任何意义)。
这样做可以解决这个问题。
答案 1 :(得分:1)
看起来当您尝试使用solr进行连接时,它正在寻找一个名为text
的字段,该字段在您的架构中缺失。
将以下行添加到架构中,然后重试:
<field name="text" type="text" indexed="true" stored="true" multiValued="true" />