【问题标题】:SOLR - MYSQL - Query resultsSOLR - MYSQL - 查询结果
【发布时间】:2012-04-23 16:17:23
【问题描述】:

我正在使用 SOLR 和 MySQL。

这是我的 data-config.xml

<dataConfig>
  <dataSource type="JdbcDataSource" 
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost/meishidb" 
              user="root" 
              password="root"/>
  <document>
    <entity name="id"
            query="SELECT 
                       p.id, 
                       p.occ_name
                   FROM 
                       BCARDS_OCCUPATION AS p">
            <field column="id" name='id'/>
            <field column="occ_name" name='occ_name'/>
    </entity>
  </document>
</dataConfig>

这些是添加到 schema.xml 的行

<field name="id" type="int" indexed="true" stored="true" required="true"/>
<field name="occ_name" type="text" indexed="true" stored="true" required="true"/>

查询运行良好,SOLR 将“n”个文档添加到索引中。 问题在于查询索引; SOLR 仅在我键入 '*:*' 并且仅关于文档 ID(而不是 occ_name)时才给我结果!

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1</int>
<lst name="params">
<str name="indent">on</str>
<str name="start">0</str>
<str name="q">*:*</str>
<str name="version">2.2</str>
<str name="rows">10</str>
</lst>
</lst>
<result name="response" numFound="5" start="0">
<doc>
<str name="id">1</str>
</doc>
<doc>
<str name="id">2</str>
</doc>
<doc>
<str name="id">3</str>
</doc>
<doc>
<str name="id">4</str>
</doc>
<doc>
<str name="id">5</str>
</doc>
</result>
</response>

如果我搜索:

id:1 给了我 id=1 的文档

occ_name:1 给了我“未定义的字段 occ_name”

为什么?

【问题讨论】:

    标签: mysql xml solr


    【解决方案1】:

    我不知道你是否在你的架构中创建了fieldType text,但是默认架构中没有这样的 fieldType。

    尝试在您的 occ_name 字段定义中使用 type="text_en"。

    顺便说一句(我总是建议同样的事情),要检查索引中的真正内容,请使用有史以来最强大的 Lucene 工具,称为 Luke。

    【讨论】:

    • 感谢您对卢克的建议。顺便说一句,使用“text_en”不起作用并且使用 Luke 我可以确认索引上没有“occ_name”
    • 查看您的 schema.xml 并检查您定义的字段类型 (fieldType)。然后相应地声明您的 occ_name 字段。所以做出这个改变,重启 Solr 并重新索引。
    • 我在 schema.xml 中定义的字段类型在我的问题中指出!我想我以错误的方式定义它们......但我看不到错误(我在 occ_name 字段中将 'text' 更改为 'text_en',正如你所建议的那样)。
    • 您没有理解我的意思,fieldType 类型的元素是在您的架构中定义的。您可以在此处查看(并在需要时配置)定义了哪些字段类型。根据 occ_name 字段中的值类型,您将定义其类型。也许您甚至没有 fieldType text_en (仅在较新版本中)。这就是我建议你检查的原因。更改字段类型后,您是否重新索引数据?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2018-02-07
    • 1970-01-01
    相关资源
    最近更新 更多