我在solr集合中有几个文档,我希望能够搜索。大多数数据来自我可以轻松抓取的网站,但是,我需要手动添加一些属性,因为我必须手动添加这些属性。
作为示例,我从站点获取以下信息(从已爬网站点返回的所有属性):
Name: Porsche Boxter
Year: 1996
...
我想通过网络界面添加其他字段(已抓取网站上不存在信息):
Cool: yes
foo: bar
我的问题:
根据Solr中的索引数据(文档内部)存储其他信息是否有意义,或者最佳做法是在Solr中仅将所有已爬网数据与查询时间内的外部托管数据库合并?对我而言,最终在Solr中查询我的所有数据更有意义,因为一些手动添加的属性是必需的搜索条件(例如,只查看90年代的酷车)。
是否可以使用Solr存储有关索引文档的其他信息?我事先知道整个架构,也许这有用吗?
如果我将数据专门存储在Solr中,如何确保在下次爬网期间不会覆盖手动添加的数据?是否需要部分更新?
由于我是Solr的新手,如果有人可以简单地管理描述我的用例的文档中要查找的内容,那将非常有用。
答案 0 :(得分:1)
这取决于外部数据的变化频率。通常,意义越小。通常,最好在索引数据中存储这些数据,因为无需额外的数据库查询就可以获得这些数据。
是。使用indexed:false
和stored:true
。如果您事先不知道所有这些字段,可以使用<dynamicField name="*_stored" type="string" indexed="false" stored="true" />
stored:true
{/ 1>}。
是。您必须使用dynamicField。在您的情况下,这没有问题,因为未更新的字段包含{{1}}。