Plugins 索尔:有没有什么办法;“在飞行中”;是否将外部数据添加到结果?

Plugins 索尔:有没有什么办法;“在飞行中”;是否将外部数据添加到结果?,plugins,solr,Plugins,Solr,我将用一个例子来解释我的问题: 我将创建一个酒店预订网站。这家旅馆有1000间房间。可用性可能会随着时间的推移而变化,价格也是如此,因为这取决于可用性 现在,我正在考虑使用Solr作为网站的搜索引擎,因为它提供了很多“开箱即用”的功能。对于初学者来说,它提供了我需要的过滤和切面功能 然而,一个主要的头痛问题是我应该如何处理可用性和价格。我总是可以,每天一次,为每个房间生成一个价格X从任何给定日期开始的提前天数Y提前天数。这意味着,如果我希望客户可以选择从今天起的任何一天开始预订1到14天的房间,

我将用一个例子来解释我的问题:

我将创建一个酒店预订网站。这家旅馆有1000间房间。可用性可能会随着时间的推移而变化,价格也是如此,因为这取决于可用性

现在,我正在考虑使用Solr作为网站的搜索引擎,因为它提供了很多“开箱即用”的功能。对于初学者来说,它提供了我需要的过滤和切面功能

然而,一个主要的头痛问题是我应该如何处理可用性和价格。我总是可以,每天一次,为每个房间生成一个价格X从任何给定日期开始的提前天数Y提前天数。这意味着,如果我希望客户可以选择从今天起的任何一天开始预订1到14天的房间,从今天起365天,这将导致大量的计算。这似乎不是一个有效的方法

有没有办法将自定义的“价格计算器”插入Solr?我认为Solr可以保存“静态”房间数据,如床位数和房间大小,然后将“价格计算器”插入Solr,Solr可以透明地动态计算价格,并简单地返回计算出的价格以及搜索结果响应。使用这种方法,我还可以在价格上实现过滤和分面


这是否接近于滥用Solr的本意?Solr能以任何方式做到这一点吗?

Solr是以索引为中心的。如果价格和可用性没有编制索引,而是动态计算,那么根据它们进行搜索和筛选将需要大量计算(=>缓慢)。As Solr将被迫在整个结果中循环,或者在最坏的情况下在整个索引中循环,而不是执行索引查找

由于使用索引是系统的核心,这就是为什么我对您的问题说
yes

这是否接近于滥用Solr的本意

但有一些方法和途径可以做到这一点,我不建议使用。我想回答你后面的问题

索尔有能力做到这一点吗

我想看看索尔的

近实时(NRT)搜索意味着文档在索引后几乎可以立即进行搜索:文档的添加和更新可以“近”实时查看。Solr 4不再在提交过程中阻止更新。在打开索引的新搜索并返回之前,它也不会等待后台合并完成

使用NRT,您可以将commit命令修改为软提交,这样可以避免标准提交中代价高昂的部分。您仍然希望执行标准提交以确保文档处于稳定的存储中,但软提交允许您同时看到索引的非常接近实时的视图。但是,请特别注意缓存和自动预热设置,因为它们可能会对NRT性能产生重大影响

这样,您可以随时计算价格,但可以快速将价格和可用性显示到索引中。你需要调整一下,以获得最佳的索引设置,但如果你仍在按原意使用Solr,那么它将得到回报

在SO问题和中对此进行了一定程度的解释

当然,更多的信息可以在网上找到