我在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的新手,所以我可能会在这里遗漏一些东西。
感谢。
答案 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:手机它将工作