为什么Solr在推动简单字符串时不使用字段类型分析器?

时间:2011-10-13 12:06:48

标签: solr

我正在尝试使用PECL向Solr添加html内容。不幸的是,我可以推送内容,但它不会在schema.xml中使用Analyzer类型

例如:

向solr添加内容:

$client = new SolrClient($options);            
$doc = new SolrInputDocument();
$doc->addField('title', 'SELLING CARS');

字段“title”的Schema.xml

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

这应确保添加的字符串转换为小写(我假设) 但是在用以下代码查询索引时:

$query->setQuery('*:*');
$query_response = $client->query($query);

内容仍然是大写?

关注输出......任何想法我做错了???

...

[0] =&gt; SolrObject对象 (    [id] =&gt; 422    [title] =&gt;排列    (      [0] =&gt;卖汽车    ) )

1 个答案:

答案 0 :(得分:1)

实际上,示例schema.xml中定义的小写字段类型仅在将字段添加到索引或用于查询时将字段缩小。如下所示,小写类型只是在索引或查询数据时应用LowerCaseFilterFactory。

<!-- lowercases the entire field value, keeping it as a single token.  -->
<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
  <analyzer>
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
  </analyzer>
</fieldType>

Solr不会更改您输入的实际值。如果你真的希望它在索引中以小写形式存储,我建议在将它提交给索引时降低值。