Solr查询特别需要“fieldname:searchtext”来获取自定义数据

时间:2014-04-10 02:06:55

标签: xml solr

关于Solrj接口,为什么对于默认的xml示例(例如,hd.xml),我只需键入" samsung "就可以轻松查询它。在查询文本框中。但对于我自己的自定义xml数据,我需要键入" fieldname:whatever "。如果我没有在前面专门添加字段名,则不会显示我的数据结果。

我使用了动态字段

<dynamicField name="*_t"  type="text_general"    indexed="true"  stored="true"/>

所以我添加了一个&#34; _t&#34;在我的每个自定义字段中。

<field name="id">3</field>
<field name="full_message_t">[CNA] Grace Fu meets China’s NPC vice chairperson http://t.co/6k9CLe4c1x</field>
<field name="source_t">CNA</field>
<field name="news_t">Grace Fu meets China’s NPC vice chairperson </field>
<field name="link_t">http://t.co/6k9CLe4c1x</field>

所以例如:  如果我只输入&#34; CNA &#34;在查询文本框中,没有任何显示。如果我输入&#34; source_t:CNA &#34;,那么我的预期结果会显示出来。为什么会这样?

2 个答案:

答案 0 :(得分:0)

solr中有类似复制字段的内容。复制字段可以将索引复制到公共字段。那么如果您在该字段上查询,则将搜索所有数据。

<field name="id">3</field>
<field name="source_t">CNA</field>

您应该将副本字段定义为

<copyField source="id" dest="text"/>
<copyField source="source_t" dest="text"/>

这里的dest代表目标字段...检查solr发行版的默认查询字段是什么,并在目的地中使用它。

请检查schema.xml中的defaultsearchfield标记,它应该是

<defaultSearchField>text</defaultSearchField>

针对这种特殊情况。

然后您可以在不指定特定字段的情况下进行搜索。

答案 1 :(得分:0)

似乎我终于想出了问题,这是一步一步的解决方案:

将字段添加到schema.xml

<copyField source="full_message_t" dest="text"/>
<copyField source="source_t" dest="text"/>
<copyField source="news_t" dest="text"/>
<copyField source="link_t" dest="text"/>

取消注释:

<defaultSearchField>text</defaultSearchField> 

重启Solr。

java -jar start.jar

最后(这是我错过的步骤),重新导入自定义xml数据。

java -jar post.jar [name].xml