我已经配置了solr,这样它就可以从postgres数据库索引记录。它已成功上传。如果我将查询字符串作为*:*
传递,它会生成表中所有行的响应。但是当我指定搜索时,结果始终为0.
查询字符串*:*
为:
<?xml version="1.0" encoding="UTF-8" ?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="q">*:*</str>
</lst>
</lst>
<result name="response" numFound="3" start="0">
<doc>
<str name="names">sample1</str>
<str name="sno">1</str>
<str name="values">3</str>
</doc>
<doc>
<str name="names">sample2</str>
<str name="sno">2</str>
<str name="values">2</str>
</doc>
<doc>
<str name="names">sample3</str>
<str name="sno">3</str>
<str name="values">4</str>
</doc>
</result>
</response>
查询字符串q=sample1
的响应是:
<?xml version="1.0" encoding="UTF-8" ?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="q">*:*</str>
</lst>
</lst>
<result name="response" numFound="0" start="0" />
</response>
提前致谢。
答案 0 :(得分:2)
q
,它本身将搜索defaultSearchField
中定义的任何字段(在schema.xml中)。
如果您要将所有有趣的文本复制到默认字段中,则该搜索将起作用。或者,您可以在查询中传递字段名称。 q=names:sample1
也应该返回结果。
答案 1 :(得分:0)
我根据Solr 6.6.2中提供的MySql集成的默认示例运行了一个测试项目(假设它与您与postgres的集成有点相关)。我遇到了这个问题,结果只是字段的命名。
在DataImportHandler的配置文件中(在大多数“Solr教程索引数据库”教程中,它被称为 data-config.xml ),<field>
元素的名称也必须是在 schema.xml 文件中。我使用了Solr附带的默认示例中的配置,要查询的字段是 _text _ 。
下面的 data-config.xml 文件中的这一行:
<field column="name" name="_text_"/>
数据-config.xml中强>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb1"
user="root"
password=""/>
<document>
<entity name="product" pk="id"
query="select id,name from products"
deltaImportQuery="SELECT id,name from products WHERE id='${dih.delta.id}'"
deltaQuery="SELECT id FROM products WHERE updated_at > '${dih.last_index_time}'"
>
<field column="id" name="id"/>
<field column="name" name="_text_"/>
</entity>
</document>
</dataConfig>
Schema.xml (必须包含以下条目):
<field name="_text_" type="text_general" indexed="true" stored="true"/>
修正后, / select?q = foo 等查询返回非空结果。