Solr没有返回从MySQL索引的结果

时间:2014-04-20 00:45:14

标签: mysql solr

我在MySQL中有4行,我将它们从管理控制台索引到Solr。导入执行成功,我收到此消息"索引已完成。添加/更新:4个文件。删除了0个文件。 (持续时间:01s)"。

接下来,当我尝试从其中一行查询某些文本时,我没有得到任何结果。我还没有改变查询的任何参数。这是日志文件中的条目:

org.apache.solr.core.SolrCore; [collection1] webapp = / solr path = / select params = {indent = true& q = LG& _ = 1397953906088& wt = json} hits = 0 status = 0 QTime = 1

我已将配置文件更新为:

solrconfig.xml中:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst>
</requestHandler>

dataconfig.xml:

<dataConfig>
  <dataSource type="JdbcDataSource" 
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/test" 
              user="root" 
              password=""/>
  <document>
    <entity name="id" 
            query="select id,name,descpt from sample">
    </entity>
  </document>
</dataConfig>

在schema.xml中,我添加了相应的字段:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="descpt" type="string" indexed="true" stored="true"/>

数据库中id,name和descpt的相应条目:

4, Television, LG

为什么我在查询LG时没有得到任何结果?我是Solr的新手,所以我可能会在这里遗漏一些东西。

感谢。

1 个答案:

答案 0 :(得分:0)

如果您正在对索引的所有元素进行常见搜索。您应该使用 copyField 将它们编入一个字段,然后将其退出。

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

您应该将副本字段定义为

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

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

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

文本

针对这种特殊情况。

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

关于你的第二个疑问

b / w&P&#39; P&#39;并且&#39; p&#39;。由于您使用descpt作为字符串字段,它将匹配确切的表达式。所以,如果你搜索descpt:手机它将工作