我的机器上有一堆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
而未进行任何分析。 id
和fileEx
都具有相同的值。我使用SolrUI中的分析器选项卡来查看我的fieldTypes是否真的有用,并发现它们按预期工作。
但由于某些原因,分析人员在索引实际文件时似乎没有正常运行。
所以,在这一点上,我感到困惑和沮丧。任何有关这方面的帮助将不胜感激。 TIA。
答案 0 :(得分:1)
我是否正确理解你是在问为什么从命中返回的文字没有改变?返回的文本是处理前的值,而不是字段的标记化内容。通过更改分析器,您不会看到返回值的任何变化。这需要突出显示正常工作。
如果要在文本到达字段之前更改文本,请使用an update processor。