我的应用程序的写入吞吐量很低,我可以管理2-3分钟的更改,以反映在solr搜索结果中
目前,我通过索引应用程序进行提交(在每批文档之后),并在solr端配置了以下内容:
solr.autoSoftCommit.maxTime : -1 (disabling auto soft commit)
solr.autoCommit.maxTime : 300000 (5 mins of hard auto commit interval)
opensearcher : false
选择配置的原因来自我对以下内容的理解:
在生产中,我观察到,只要我的应用程序尝试为一个文档(或一批文档)编制索引,然后(从我的应用程序)发出commit语句,我的所有顶级缓存都会被删除
我想也许仅仅依靠硬自动提交会有所帮助,但根据这个堆栈溢出链接
硬提交是关于持久性的,软提交是关于可见性的。这里真的有两种味道,openSearcher=true和openSearcher=false。首先我们将讨论这两种情况下会发生什么。如果openSearcher=true或openSearcher=false,以下后果是最重要的:
tlog被截断:启动新的tlog。如果较新的、已关闭的TLOG中有100多个文档,则将删除旧的TLOG。当前索引段已关闭并刷新。可以启动后台段合并。以上情况发生在所有硬提交上。这将保留openSearcher设置
openSearcher=true:Solr/Lucene搜索器被重新打开,所有缓存都无效。自动预热已完成等。这曾经是您查看新添加文档的唯一方式。
openSearcher=false:除了上面的四点之外,没有其他事情发生。要搜索文档,需要软提交。
总之,软提交将刷新缓存,opensearcher=true的自动硬提交也将刷新缓存。而opensearcher=false的自动硬提交将不允许反映我添加的更改。
如果我误解了什么,请指出我。
下面是我的问题:
我已经阅读了多个文档链接和文章,但我找不到任何合适的链接来解释在不同的场景中要使用什么设置。如果有人能解释我做错了什么,并指导我找到一个合适的解决方案,那将非常有帮助。
从solr用户列表中,您可以尝试使用更实时的分段缓存
它应该像q={!parent which=COLOR:Blue v=“”}而不是q=COLOR:Blue,请确保在solrconfig中有以下定义。xml此再生器应在搜索器之间传输过滤器位集。
<query>
<cache name="perSegFilter"
class="solr.LRUCache"
size="100"
initialSize="10"
autowarmCount="100%"
regenerator="solr.NoOpRegenerator"/>
</query>
在提交后立即检查此缓存是有意义的。
你的理解是对的。
Solr缓存与索引搜索器的特定实例相关联,索引搜索器的特定视图在该搜索器的生命周期内不会更改。只要使用该索引搜索器,其缓存中的任何项目都将有效并可供重用。
打开新的搜索程序时,当前搜索程序将继续为请求提供服务,而新搜索程序将自动预热其缓存。新搜索者使用当前搜索者的缓存预填充自己的缓存。当新搜索者准备就绪时,它将注册为当前搜索者,并开始处理所有新的搜索请求。旧的searcher将在完成所有请求的服务后关闭。
>
是的,预热是在打开新搜索程序之前填充缓存的最佳方式。您应该确定系统中最常用的查询,并让这些查询自动预热新缓存。
每个选项都有缺点。你需要弄清楚什么最适合你。
没有免费的午餐。
问题内容: 我有一个简单的表单,可将文本提交到SQL表。问题在于,用户提交文本后,他们可以刷新页面,并且无需再次填写表单即可再次提交数据。提交文本后,我可以将用户重定向到另一个页面,但是我希望用户停留在同一页面上。 我记得读过一些有关为每个用户提供唯一的会话ID并将其与另一个值进行比较的信息,这些值解决了我遇到的问题,但我忘记了它在哪里。 问题答案: 使用发布/重定向/获取模式。 在我的网站上
问题内容: 我正在使用PHP开发一个简单的网站。 开发配置: WAMP 生产配置: LAMP 在测试时,我更改了CSS文件,但是当我重新加载页面时,我的浏览器(不确定)仍使用旧的缓存CSS。 我进行了一些谷歌搜索,发现了已经尝试过的其他解决方案 在CSS末尾附加查询 使用(在Firefox中)强制获取资源 禁用Firefox缓存以及使用Firefox加载项。 当这些都不起作用时,我做了更多的谷歌搜
问题内容: 我一直在尝试React。在我的实验中,我正在使用Reactstrap框架。当我单击按钮时,我注意到HTML表单已提交。有没有一种方法可以防止单击按钮时提交表单? 我在这里重新创建了我的问题。我的表单很基本,看起来像这样: 我想念什么? 问题答案: 我认为首先要注意的是,如果没有javascript(纯HTML),则在单击或时会提交元素。在javascript中,您可以通过使用事件处理程
我正在做一个Django项目,其中一个表单不会提交。我发现罪魁祸首是一些JavaScript,它格式化了货币输入(当我移除JS或移除输入时,它提交) 这是我的简化表单--JS来自html5货币/货币输入
问题内容: 我已经编写了一个Linux驱动程序,该驱动程序ioremaps将特定设备的PCI BAR0导出为sysfs二进制属性,允许用户空间直接控制它。 当我尝试在属性顶部使用MMAP来直接访问该位内存(从Userland程序)时,问题就浮现了。读取可以很好地完成并返回期望值,尽管当我写入该内存时,它似乎被缓存在内核和内存之间的某个地方,而不是传递给GMCH根联合体(以及设备)。我想做的是每
我有从我的网页生成的AJAX POST请求,可能有多个POST请求具有相同的POST数据。但是响应可能会有所不同,我希望确保我没有得到这些请求的缓存响应。我需要每个请求点击网页。 我假设对POST请求的响应不会被缓存,这对吗?