关于索尔的几个问题。交易和实时搜索

时间:2012-02-16 10:47:54

标签: solr full-text-search real-time lucene

我在PHP / MySQL中有一个heldesk应用程序。我想实现实时全文搜索,我已入围Solr。 MySQL数据库将存储搜索所需的所有数据和数据,用于构建Solr索引。所有搜索请求都将由Solr处理。

我想要的是

  • 实时搜索。有人更新票证的那一刻,它应该可用于搜索。
  • 如果多人同时更新故障单,Solr应该能够处理提交

根据我对Solr的理解,这就是我认为系统可行的方式。用户更新故障单 - >修改了相应的数据库记录 - >将请求发送到Solr服务器以修改索引中的相应文档。

我读过一本关于索尔的书,下面的问题令我不安。

  1. 这本书提到了

      

    “Solr中的提交很慢。根据索引大小,Solr's   自动加温配置,以及Solr的缓存状态   提交,提交可能需要非常重要的时间。通常情况下,   它需要几秒钟,但它可能需要几分钟   极端情况“

    如果这是真的,那么我怎么知道数据何时可用于搜索以及如何实现实时搜索?即使它花了几秒钟,也不可能是实时的。此外,我不希望减慢故障单更新操作(通过添加更新Solr索引的额外步骤)

  2. 还提到了

      

    “没有事务隔离。这意味着如果不止一个   Solr客户端将提交修改并将其提交给   重叠时间,有可能是一个客户端的一部分   在该客户端告诉Solr提交之前要提交的更改。这个   也适用于回滚。如果这是你的问题   架构然后考虑使用一个客户端进程负责   更新Solr。“

  3. 这是否意味着由于缺少交易提交,如果多人同时更新票证,Solr会搞乱?

    现在我面前的问题是:我能用Solr实现这两个吗?如果是,怎么样?

    EDIT1: 是啊!我提出了几个类似的问题,但没有一个有令人满意的答案。所以再次发帖。对不起如果您发现它重复。

1 个答案:

答案 0 :(得分:4)

您要求的功能称为近实时搜索,也称为NRT。关于NRT的工作仍在进行中,但过去几年来Solr对这种支持的改进有了很大的改进。有关NRT当前(版本1.4 - 3.5)和未来(版本4.0)支持的更多详细信息,请参阅以下链接。

NRT选项