我在PHP / MySQL中有一个heldesk应用程序。我想实现实时全文搜索,我已入围Solr。 MySQL数据库将存储搜索所需的所有数据和数据,用于构建Solr索引。所有搜索请求都将由Solr处理。
我想要的是
根据我对Solr的理解,这就是我认为系统可行的方式。用户更新故障单 - >修改了相应的数据库记录 - >将请求发送到Solr服务器以修改索引中的相应文档。
我读过一本关于索尔的书,下面的问题令我不安。
这本书提到了
“Solr中的提交很慢。根据索引大小,Solr's 自动加温配置,以及Solr的缓存状态 提交,提交可能需要非常重要的时间。通常情况下, 它需要几秒钟,但它可能需要几分钟 极端情况“
如果这是真的,那么我怎么知道数据何时可用于搜索以及如何实现实时搜索?即使它花了几秒钟,也不可能是实时的。此外,我不希望减慢故障单更新操作(通过添加更新Solr索引的额外步骤)
还提到了
“没有事务隔离。这意味着如果不止一个 Solr客户端将提交修改并将其提交给 重叠时间,有可能是一个客户端的一部分 在该客户端告诉Solr提交之前要提交的更改。这个 也适用于回滚。如果这是你的问题 架构然后考虑使用一个客户端进程负责 更新Solr。“
这是否意味着由于缺少交易提交,如果多人同时更新票证,Solr会搞乱?
现在我面前的问题是:我能用Solr实现这两个吗?如果是,怎么样?
EDIT1: 是啊!我提出了几个类似的问题,但没有一个有令人满意的答案。所以再次发帖。对不起如果您发现它重复。
答案 0 :(得分:4)
您要求的功能称为近实时搜索,也称为NRT。关于NRT的工作仍在进行中,但过去几年来Solr对这种支持的改进有了很大的改进。有关NRT当前(版本1.4 - 3.5)和未来(版本4.0)支持的更多详细信息,请参阅以下链接。
NRT选项