【问题标题】:How to index only document content and not document property in text field in Apache Solr如何在 Apache Solr 的文本字段中仅索引文档内容而不是文档属性
【发布时间】:2023-04-02 20:18:02
【问题描述】:

Apache Solr Reference Guide 中所述,我正在使用 Apache Solr 8.6 在 Linux 中使用 POST 工具对文档进行索引。

POST 工具命令

bin/post -c testcore /testdocs/

文档已成功编入索引。现在,当我在 Solr Admin UI 中搜索字符串时,例如:hello,它正在返回匹配的文档,并且我可以在 _text_ 字段中查看文档内容,因为我使用以下属性将内容存储在 ma​​nage-schema .xml

<field name="_text_" type="text_general" multiValued="true" indexed="true" stored="true"/> 

它正在索引文档内容并存储在_text_字段中,但它也在_text_字段中存储和显示文档属性,如内容类型和其他文档类型属性。

现在我希望这些属性不应该存储在 _text_ 字段中,而应该只存储实际的文档内容。

solrconfig.xml 配置

<requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler">

 <lst name="defaults">
      <str name="lowernames">true</str>
      <str name="fmap.meta">ignored_</str>
      <str name="fmap.content">_text_</str>
    </lst>

</requestHandler>

如果您能进一步指导我,将不胜感激。

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

    您需要使用参数uprefix 而不是fmap.&lt;source_field&gt; 以便将未知字段名称映射到将被忽略的架构字段名称(您只能使用 fmap 映射已知字段名称),所以在请求中你应该有的处理程序:

    <str name="uprefix">ignored_</str>
    

    必须在架构中定义相应的动态字段来处理这些未知字段(还有fieldType,使用托管架构时不知道它是否已经存在):

    <dynamicField name="ignored_*" type="ignored" />
    

    【讨论】:

    • 感谢您的回复。我已经替换了 uprefix 而不是 fmap.。同样在 managed-schema.xml 中,它已经具有所需的字段。但是当我重新索引文档时,它仍然显示为“ \n \n stream_size 11476 \n X-Parsed-By org.apache.tika.parser.DefaultParser \n X-Parsed-By org.apache.tika.parser.pkg .PackageParser \n stream_content_type application/vnd.openxmlformats-officedocument.wordprocessingml.document \n resourceName test16m.docx \n Content-Type application/vnd.openxmlformats-officedocument" etc 在文本字段中,然后是实际文档内容
    • 实际上,在 managed-schema.xml 中存在的诸如“x_parsed_by,stream_content_type”之类的文档属性字段也被索引并存储在 text 字段中。我需要排除那些字段,并且仅在此 text 字段中包含文档内容。
    • 好的,我明白了,您需要&lt;str name="captureAttr"&gt;true&lt;/str&gt;(这是默认值,仅用于确保 solr 不会将所有元映射到内容字段),然后您可以注释掉定义的 tika 字段架构(以便它们通过“uprefix”参数动态映射到ignore_*),您可以将它们显式映射到ignore_或通过fmap(例如&lt;str name="fmap.x_parsed_by"&gt;ignored_&lt;/str&gt;)的专用字段。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2012-07-02
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多