关于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;,那么我的预期结果会显示出来。为什么会这样?
答案 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