在solr搜索中选择不起作用

时间:2012-10-01 11:26:24

标签: solr

我已经配置了solr,这样它就可以从postgres数据库索引记录。它已成功上传。如果我将查询字符串作为*:*传递,它会生成表中所有行的响应。但是当我指定搜索时,结果始终为0.

查询字符串*:*为:

时的我的XML响应
<?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>

提前致谢。

2 个答案:

答案 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 等查询返回非空结果。