【问题标题】:SOLR - Use single text field in schema for full text searchSOLR - 在架构中使用单个文本字段进行全文搜索
【发布时间】:2013-02-08 08:10:07
【问题描述】:

我正在熟悉 SOLR。

我想使用 SOLR 对多种实体进行全文搜索。我不想为每种不同类型的实体创建一个文档。我不希望能够搜索特定字段。我只对指定字符串是否在任何项目中的任何位置感兴趣。

例如,在数据库术语中,我有一个表 News 和一个表 Employee,我想搜索单词“apple”,我不介意它在哪个字段中,我只想从中取回数据库 ID包含它的记录。

这可能是一个解决方案,我使用类似这样的 SOLR 架构:

<fields>
   <field name="id" type="string" indexed="true" stored="true"/> 
   <field name="content" type="text" indexed="true" stored="false"/>
</fields>

所以,我只需要一个 ID 和内容。我将希望能够在其中搜索的所有数据放入一个“内容”字段中。当我搜索一些单词时,它会在 'id' 和 int 'content' 中查找它。

这是个好主意吗?有任何性能或设计问题?

谢谢, 塔马斯

【问题讨论】:

    标签: solr full-text-search schema


    【解决方案1】:

    https://wiki.apache.org/solr/SchemaXml#Copy_Fields。它说:

    一个常见的要求是将所有输入字段复制或合并到一个 solr 字段中。这可以按如下方式完成:-

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

    这通常是跨多个字段搜索的方法。

    但是,如果您甚至不需要原始字段,只需将所有字段连接成一个大字段content 并在 Solr 中建立索引。应该没有问题。

    【讨论】:

      【解决方案2】:

      您可以将字段复制到文本(参见分发中的示例)并将其设置为默认字段(用于选择处理程序的 solrconfig.xml 中的“df”参数)。

      或者,如果您预计会有更复杂的需求和/或非文本搜索,我建议您查看eDismax with qf parameter,它会自行处理所有这些字段的搜索。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-15
        • 1970-01-01
        • 2013-04-25
        • 2012-05-30
        • 2014-12-25
        • 2017-09-06
        相关资源
        最近更新 更多