3

我越来越熟悉 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' 中查找它。

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

谢谢, 塔马斯

4

2 回答 2

6

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

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

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

这通常是在多个字段中搜索所要做的。

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

于 2013-02-22T17:23:02.847 回答
0

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

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

于 2013-02-22T22:19:01.807 回答