索引期间未使用自定义Solr分析器

时间:2016-09-02 22:18:36

标签: solr lucene

我的机器上有一堆PDF文件,我想在Solr中编制索引。为此,我创建了一个包含自定义字段类型和用户定义字段的模式文件。

以下是我schema.xml中的字段和copyField:

<field name="id" type="custom01" indexed="true" stored="true" required="true" multiValued="false" />
<field name="_version_" type="long" indexed="true" stored="false"/>
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="custom02" indexed="true" stored="true" multiValued="true"/>
<field name="fileEx" type="custom03" indexed="false" stored="true" multiValued="false"/>

<copyField source="id" dest="fileEx"/>

id字段将包含索引文件的实际路径。我打算将此值复制到fileEx,并使用字段定义中给出的自定义分析器在字段中保存文件的扩展名。

以下是我的自定义fieldType定义:

<fieldType name="custom01" class="solr.TextField"> <!-- Dummy fieldType -->
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="^$"/>
</analyzer>
</fieldType>

<fieldType name="custom02" class="solr.TextField">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="\.([^.]*$)" group="0"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="\." replacement=""/>
</analyzer>
</fieldType>

当我尝试使用此架构索引文件时,id字段的内容只是复制到fileEx而未进行任何分析。 idfileEx都具有相同的值。我使用SolrUI中的分析器选项卡来查看我的fieldTypes是否真的有用,并发现它们按预期工作。

但由于某些原因,分析人员在索引实际文件时似乎没有正常运行。

所以,在这一点上,我感到困惑和沮丧。任何有关这方面的帮助将不胜感激。 TIA。

1 个答案:

答案 0 :(得分:1)

我是否正确理解你是在问为什么从命中返回的文字没有改变?返回的文本是处理前的值,而不是字段的标记化内容。通过更改分析器,您不会看到返回值的任何变化。这需要突出显示正常工作。

如果要在文本到达字段之前更改文本,请使用an update processor