2013-02-22 50 views
2

我对SOLR很熟悉。SOLR - 在模式中使用单个文本字段进行全文搜索

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

在数据库方面,例如我有一个表新闻和一个表员工,我想搜索单词'苹果',我不介意在哪个领域,我只想取回数据库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'中查找它。

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

感谢, 塔马斯

回答

3

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

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

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

这通常是通过多个字段进行搜索。

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

0

您可以将文本复制到文本(请参阅发行版中的示例),并将其设置为默认字段(solrconfig.xml中的选项处理程序中的“df”参数)。或者,如果您预计更复杂的要求和/或非文本搜索,我建议您查看eDismax with qf parameter,它会处理搜索所有这些字段本身。