Solr DataImportHandler未对所有定义的数据建立索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr DataImportHandler未对所有定义的数据建立索引相关的知识,希望对你有一定的参考价值。

我正在使用solr5.3。

我正在尝试使用“DataImportHandler”将维基百科页面文章dump上传到solr但我在查询时只获取id和title文件。

下面是我的data-config.xml

<dataConfig>
        <dataSource type="FileDataSource" encoding="UTF-8" />
        <document>
        <entity name="page"
                processor="XPathEntityProcessor"
                stream="true"
                forEach="/mediawiki/page/"
                url="/mnt/TEST/enwiki-20150602-pages-articles1.xml"
                transformer="RegexTransformer,DateFormatTransformer"
                >
            <field column="id"        xpath="/mediawiki/page/id" />
            <field column="title"     xpath="/mediawiki/page/title" />
            <field column="revision"  xpath="/mediawiki/page/revision/id" />
            <field column="user"      xpath="/mediawiki/page/revision/contributor/username" />
            <field column="userId"    xpath="/mediawiki/page/revision/contributor/id" />
            <field column="text"      xpath="/mediawiki/page/revision/text" />
            <field column="timestamp" xpath="/mediawiki/page/revision/timestamp" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'" />
            <field column="$skipDoc"  regex="^#REDIRECT .*" replaceWith="true" sourceColName="text"/>
       </entity>
        </document>
</dataConfig>

我还在schema.xml中添加了以下条目。

 <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="title"     type="string"  indexed="true" stored="false"/>
    <field name="revision"  type="int"    indexed="true" stored="true"/>
    <field name="user"      type="string"  indexed="true" stored="true"/>
    <field name="userId"    type="int"     indexed="true" stored="true"/>
    <field name="text"      type="text_en"    indexed="true" stored="false"/>
    <field name="timestamp" type="date"    indexed="true" stored="true"/>
    <field name="titleText" type="text_en"    indexed="true" stored="true"/>

我已经从“example / example-DIH / solr / solr / conf / schema.xml”复制了schema.xml,并删除了所有字段条目,除了注释中提到的几乎没有例外。

导入数据后,我只是想获取所有字段,但我只得到“Id”和“Title”。

此外,我尝试使用调试模式运行documentImport,以便我可以获得有关索引的一些信息,但是无论何时我选择调试模式,它只导入2个文档。我不知道为什么?由于这个原因,我无法调试索引过程。

请进一步指导我。

编辑 - 我现在确定其他字段没有被索引,因为当我指定df = user或text时,我收到的信息低于消息。

“msg”:“未定义的字段用户”,

我在下面查询:http://localhost:8983/solr/wiki/select?q=%3A&fl = id%2Ctitle%2Ctext%2Crevision&wt = json&indent = true&debugQuery = true

答案

我亲爱的朋友,你只是错误地键入了其中一个字段。尝试这个链接,你想要同时笑和哭。

http://localhost:8983/solr/wiki/select?q=*%3A*&fl=id+titleText+user+revision&wt=json&indent=true

您在架构中提到的标题是“titleText”,您的限制单独提到“标题”和“文本”。所以上帝的速度,你可以通过环聊与我保持联系:porous999@gmail.com

另一答案

提供的设置仅适用于经典架构。但是在solrconfig默认情况下启用了托管模式。因此,我没有得到文字。对于托管模式,我不需要定义“schema.xml”,我应该在data-config.xml中定义字段,如下所示。

 <field column="id"        xpath="/mediawiki/page/id" />
            <field column="title_s"     xpath="/mediawiki/page/title" />
            <field column="revision"  xpath="/mediawiki/page/revision/id" />
            <field column="user_s"      xpath="/mediawiki/page/revision/contributor/username" />
            <field column="userId"    xpath="/mediawiki/page/revision/contributor/id" />
            <field column="text_s"      xpath="/mediawiki/page/revision/text" />
            <field column="timestamp" xpath="/mediawiki/page/revision/timestamp" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'" />
            <field column="$skipDoc"  regex="^#REDIRECT .*" replaceWith="true" sourceColName="text"/>
另一答案

我最近尝试使用Solr 7进行相同的维基百科导入。未返回原因文本是因为managed_schema中的该字段设置为stored =“false”:

<field name="text" type="text_en" indexed="true" stored="false"/>

将其更改为stored =“true”将返回文本。

当前接受的答案建议使用text_s字段,该字段可能存储在OP正在使用的Solr版本的managed_schema中。请注意,搜索未存储的任何字段中包含的术语仍将返回相关文档,仅返回文本本身。有关更多信息,请参阅此处的答案:Solr index vs stored

以上是关于Solr DataImportHandler未对所有定义的数据建立索引的主要内容,如果未能解决你的问题,请参考以下文章

通过Solr所提供的Dataimporthandler实现数据源的导入

Solr DataImportHandler 配置

URLdatasource的dataimporthandler中的SOLR子文档定义

solr 学习之数据导入

SolrCentos7 下solr-5.5.4核的创建

solr 数据导入