【问题标题】:Solr schema fieldSolr 架构字段
【发布时间】:2013-08-14 07:38:54
【问题描述】:

我已经为 solr 创建了一个架构,但我不知道要添加的文档中每个字段的名称,所以我定义了一个这样的动态字段:

<dynamicField name="*" type="text_general" indexed="true" stored="true" />

现在我正在测试,在导入文档中未定义的字段时没有收到错误,但是当我尝试查询 *:something(“*”以外的任何内容)时,我没有得到任何结果回来了。 我的问题是如何定义一个全部字段,有没有正确的方法来做到这一点?还是我误以为*:something 的查询通常会在所有文档和所有字段中搜索“某物”?

【问题讨论】:

    标签: solr


    【解决方案1】:

    搜索关键字`*:something`无法从solr得到任何东西,无论你使用什么样的字段,dinamicField与否。

    如果我正确理解您的问题,您需要一个动态字段来存储所有字段并希望稍后查询所有字段。

    这是我的解决方案。

    首先,为搜索定义一个default_search字段:

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

    然后将所有字段复制到 default_search 字段中。

    <copyField source="*" dest="default_search" />
    

    最后,您可以像这样查询所有字段:

    http://host/core/select/?q=something
    

    http://host/core/select/?q=default_search:something
    

    【讨论】:

    • 谢谢,我已经有一个搜索字段并将 * 复制到其中,只是在发布问题之前我没有重新索引,然后它不起作用,我以为我错过了一些东西。现在它工作正常。再问一个问题,该查询适用于*:*search:something,但不适用于*:something。我以为 * 是字段名称的替代品,那么第一个查询 *:* 中的 * 是什么?
    • 我不是很清楚。我认为*:* 只是用于搜索所有内容的设计。 *:something 不是有效查询。拥有搜索字段后,您就可以对其进行搜索。
    【解决方案2】:

    AFAIK *:something 不会查询所有字段。它查找字段名称*

    尝试查询 *:test 时出现以下错误

    <response>
        <lst name="responseHeader">
            <int name="status">400</int>
            <int name="QTime">9</int>
            <lst name="params">
                <str name="wt">xml</str>
                <str name="q">*:test</str>
            </lst>
        </lst>
        <lst name="error">
            <str name="msg">undefined field *</str>
            <int name="code">400</int>
        </lst>
    </response>
    

    您需要在您的schema.xml 中使用copyField 定义一个包罗万象的字段。

    我建议不要对动态字段使用简单的通配符。取而代之的是这样的:

    <dynamicField name="*_text" type="text_general" indexed="true" stored="true" />
    

    然后有一个包罗万象的字段

    <field name="CatchAll" type="text_general" indexed="true" stored="true" multiValued="false" />
    

    您可以定义如下copyField,以支持q=something等查询

    <copyField source="*_text" dest="CatchAll" />
    

    【讨论】:

      猜你喜欢
      • 2012-01-29
      • 2015-08-26
      • 2013-04-25
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2012-09-10
      • 1970-01-01
      相关资源
      最近更新 更多