0

我已经配置了 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>

提前致谢。

4

2 回答 2

2

q, 本身将在defaultSearchField(在 schema.xml 中)中定义的任何字段中搜索。

如果您要将所有有趣的文本复制到默认字段中,则该搜索将起作用。或者,您可以在查询中传递字段名称。q=names:sample1也应该返回结果。

于 2012-10-01T21:33:17.167 回答
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_"/>

数据配置.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之类的查询返回非空结果。

于 2017-11-11T14:47:09.370 回答