【问题标题】:Solr select only returning idsSolr 仅选择返回的 id
【发布时间】:2014-01-04 18:01:39
【问题描述】:

我是 Solr 的新手,我按照一些教程进行设置。我正在使用 Postgresql。当我运行http://localhost:8080/solr/select?q=*:* 时,我回来了:

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">7</int>
    <lst name="params">
      <str name="q">*:*</str>
    </lst></lst>
    <result name="response" numFound="56" start="0">
      <doc>
        <str name="id">1</str>
      </doc>
      <doc>
        <str name="id">2</str>
      </doc>
      ...
      ...
      <doc>
        <str name="id">10</str>
      </doc>
    </result>
  </response>

我希望得到一个包含 first_name 和 last_name 的孩子的列表。

我的solrconfig.xml中的requestHandler

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

我的data-config.xml

    <dataConfig>
<dataSource type="JdbcDataSource"
        driver="org.postgresql.Driver" 
        name="ds1" url="jdbc:postgresql://localhost/some_db" user="db_user" password="hatpants" />
  <document name="kids">
    <entity name="kid" pk="ID" dataSource="ds1" 
            query="select id,first_name,last_name from kid">
        <field column="ID" name="id" indexed="true" />
        <field column="FIRST_NAME" name="first_name" indexed="true" />
        <field column="LAST_NAME" name="last_name" indexed="true" />
    </entity>
  </document>
</dataConfig>

当我运行数据导入时:http://localhost:8080/solr/dataimport?command=full-import 我得到这个:

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">4</int>
  </lst>
  <lst name="initArgs">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst></lst>
    <str name="command">full-import</str>
    <str name="status">idle</str>
    <str name="importResponse"/>
    <lst name="statusMessages">
      <str name="Total Requests made to DataSource">1</str>
      <str name="Total Rows Fetched">56</str>
      <str name="Total Documents Skipped">0</str>
      <str name="Full Dump Started">2014-01-04 04:47:14</str>
      <str name="">Indexing completed. Added/Updated: 56 documents. Deleted 0 documents.</str>
      <str name="Committed">2014-01-04 04:47:14</str>
      <str name="Optimized">2014-01-04 04:47:14</str>
      <str name="Total Documents Processed">56</str>
      <str name="Time taken ">0:0:0.243</str>
    </lst>
    <str name="WARNING">This response format is experimental.  It is likely to change in the future.</str>
  </response>

在我看来,它似乎能够连接到数据库。而且我在数据库中总共有 56 条记录。当我进行特定选择时,它不会返回任何结果。

【问题讨论】:

    标签: java postgresql search solr


    【解决方案1】:

    我想通了。

    我需要将这些字段添加到我的 schema.xml 文件的字段部分。

    <field name="first_name" type="text" indexed="true" stored="true" multiValued="true" />
    <field name="last_name" type="text" indexed="true" stored="true" multiValued="true" />
    

    <copyField source="first_name" dest="text"/>
    <copyField source="last_name" dest="text"/>
    

    【讨论】:

    • 对于您的用例,可以消除 multiValued 属性(multiValued 默认为 false。) multiValued 属性基本上允许在平面 Lucene 结构中建立一对多关系。唯一需要 multiValued 属性的情况是,如果您的文档每条记录需要 多个 first_name 或 last_name 字段。
    猜你喜欢
    • 2018-09-02
    • 1970-01-01
    • 2013-02-20
    • 2019-10-20
    • 1970-01-01
    • 2021-08-20
    • 2013-10-10
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多