SOLR - 在模式中使用单个文本字段进行全文搜索

时间:2013-02-22 16:25:57

标签: solr full-text-search schema

我熟悉SOLR。

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

在数据库方面,例如我有一个表新闻和一个表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'和'content'中查找它。

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

谢谢, 的Tamas

2 个答案:

答案 0 :(得分:4)

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

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

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

这通常是在多个字段中搜索的内容。

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

答案 1 :(得分:0)

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

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