【问题标题】:Solr Sunspot non-indexed fieldSolr 太阳黑子非索引字段
【发布时间】:2011-05-25 20:16:48
【问题描述】:

Solr(通过 Lucene)支持不同的方式来指示字段在文档中的索引方式:索引、标记、存储……

我正在寻找一种将字段存储在 Solr 中但未编入索引的方法。有没有办法在 Sunspot 中实现这一目标?

【问题讨论】:

    标签: lucene solr sunspot sunspot-rails


    【解决方案1】:

    Sunspot 的配置 DSL 支持其许多默认类型的 :stored => true 选项。对于存储字符串的示例,它会比我的第一个示例简单得多:

    searchable do
      string :name, :stored => true
    end
    

    这会生成一个字段名称 name_ss,对应于 Sunspot 标准架构中已经存在的以下 dynamicField

    <dynamicField name="*_ss" stored="true" type="string" multiValued="false" indexed="true"/>
    

    您还可以在您的 schema.xml 中创建自己的自定义 fielddynamicField 以进行存储但不编入索引,然后使用 Sunspot 1.2 :as 选项指定相应的字段名称。

    例如,上面的一个更详细的版本。在您的架构中:

    <dynamicField name="*_stored_string" type="string" indexed="false" stored="true" />
    

    在你的模型中:

    searchable do
      string :name, :as => 'name_stored_string'
    end
    

    【讨论】:

      【解决方案2】:

      你可以试试:

      http://localhost:8983/solr/admin/luke?numTerms=0

      并使用 xpath 或正则表达式读取具有架构属性值的字段:

      <str name="I">Indexed</str>
      <str name="T">Tokenized</str>
      <str name="S">Stored</str>
      

      你会得到类似的东西:

      <lst name="field">
      <str name="type">stringGeneralType</str>
      <str name="schema">--SM---------</str>
      </lst>
      

      【讨论】:

      • 这会告诉我一个字段是否被存储/索引。但不是告诉 Solr 字段存储属性的方法。还是我在这里遗漏了什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2014-05-30
      相关资源
      最近更新 更多