使用自定义字段/核心扩展Solr教程

时间:2014-08-25 15:07:33

标签: solr

站起来一个基本的码头Solr example。我试图建立自己的核心来代表我公司将看到的数据。我创建了一个包含conf和data目录的目录结构,并从collection1示例中复制了core.properties,schema.xml和solrconfig.xml。 我编辑了core.properties以更改核心名称,并且我已经为模式添加了31个字段(大多数类型为text_general,索引,存储,不需要或多值)。

我很确定我已经正确设置了,因为我可以看到管理页面中的核心下拉并与之交互。问题是,当我提供为新字段设计的文档时,我无法成功查询任何值。我相信数据是在我获得相同的命令行响应时输入的:

"POSTing file incidents.xml...
1 file indexed. .... 
COMMITting..."

我认为,索引过程需要更多时间,但是当我将一个示例文档(例如<field name="name">Apple 60 GB iPod with Video Playback Black</field> from ipod_video.xml)中的字段节点复制到我的文件副本(incidents2.xml)时,搜索任何这些字符串立刻成功。

我的问题的最好例子是两个文件都有字段:     <field name="Brand" type="text_general" indexed="true" stored="true" required="false" multiValued="false"/>     <field name="Brand">APPLE</field> 但是,只返回第二个文档(带有前面提到的名称字段)并带有 apple 的查询。

感谢您阅读这篇文章;我的问题是:

1)有没有办法转储文件摄取的分析/标记化阶段?我不明白它或分析选项卡不是为此而设计的。 debugQuery = true参数提供相关性得分数据,但不解释文档被排除的原因。

2)一旦我解决了整个问题,我想在索引中包含大文本字段,我可以在solr中的CDATA块中包装长格式文本吗?

再次感谢。

1 个答案:

答案 0 :(得分:0)

要调试Solr中的任何查询问题,需要检查一些有用的东西。您可能还希望将分析页面的输出和您遇到问题的字段从schema.xml添加到您的问题中。在尝试调试任何索引问题时,使用较小的内核(使用三个或四个字段以开始并使其工作)也是一个好主意。

文档实际上是否在索引中? - 执行搜索q=*:*)以确保索引中存在任何文档。 *:*是一种捷径,意味着&#34;无论价值如何,都能给我所有文件&#34;。如果没有返回文档,则索引中没有内容,任何搜索它的尝试都将得到零结果。

检查日志 - 确保已设置SolrLogging,以便在日志中输入任何错误。通过这种方式,您可以查看在进行查询或索引时是否存在特定的错误,这将导致查询永远不会执行或任何文档被添加到索引中。

使用“分析”页面 - 如果您在索引中包含文档,但未针对您正在进行的查询返回这些文档,请选择您要查询的字段在分析页面并添加索引时(在索引列中)给出的值和查询时使用的值(在查询字段中)。然后,该页面将生成索引和查询时采取的所有步骤,并在每个步骤显示令牌流。如果令牌匹配,它们将以不同的背景颜色突出显示,并且根据您的设置,您可能要求查询侧存在的所有令牌都出现在索引端(即每个令牌一起编辑)。首先在查询端搜索单个令牌,因为这个原因。

如果您仍然没有任何匹配,但索引中包含文档,则更具体。 : - )

是的,你可以使用CDATA。