gpt4 book ai didi

lucene - 多索引、需求复杂的全文检索

转载 作者:行者123 更新时间:2023-12-02 00:34:36 29 4
gpt4 key购买 nike

我们正在构建一个应用程序,它需要我们为每个用户索引数据,以便我们可以对他们的数据进行全文搜索。以下是有关该应用程序的一些值得注意的事情:

A) 每个用户的数据与其他每个用户完全无关。这给了我们一些优势:

  1. 我们可以保持我们的索引小大小。
  2. 合并/压缩碎片索引将花费更少的时间。
  3. 如果某些索引变得不可访问无论出于何种原因(腐败?),只有那些用户会受到影响。其他用户不受影响,并且为他们提供服务。

B) 每个用户可以拥有几种不同类型的数据。出于与上述相同的原因,我们希望将每种类型保存在单独的文件夹中。

因此,我们的索引层次结构将类似于:

/user1/type1/<index files><br/>
/user1/type2/<index files><br/>
/user2/type1/<index files><br/>
/user3/type3/<index files>

C) 通常,可能在每次迭代中,我们都会添加可以索引的数据“类型”。
所以我们希望有一种高效/编程的方式来为不同的“类型”添加模式。我们希望避免使用固定的索引模式。我喜欢 Lucene 的无模式索引方式。

D) 用户可以触发搜索查询,搜索查询将搜索: - 在该用户的特定“类型”中 - 跨该用户的所有类型:在这种情况下,我们希望像 Lucene 那样触发并行查询。 (ParallelMultiSearcher)

E) 我们需要索引的实时更新。 这是必须的。

F) 我们正计划在多台机器上分片我们的索引。为此,我们还希望:
如果一个分片变得不可访问,只有那些数据驻留在该分片中的用户才会受到影响。其他用户获得不间断的服务。

我们正在考虑使用 Lucene、Sphinx 和 Solr 来做这件事。这是我们发现的:

  • Sphinx:做 A、B、C、F。还是有?
  • Luecne:一切看起来都有可能,因为这是非常低的水平。但我们必须编写包装器来执行 F 并构建一个网络之间的通信层服务器和搜索服务器。
  • Solr:不确定我们是否可以做 A、B、C容易地。我们可以吗?

那么,我的问题是满足上述要求的最佳软件是什么?如果我们满足所有要求,我更倾向于 Solr,然后是 Lucene。

最佳答案

我看不到 Solr 能够处理 A 或 B,因为 Solr 的模型是将所有内容都放在一个索引中(每个 shard 核心)。如果使用 dynamic field types,Solr 可以处理 C .尽管 Solr 可以进行实时索引,但它不如 Lucene 快(根据我的经验,即使使用嵌入式 Solr)。这一切都表明 Lucene 是您唯一的选择。

关于lucene - 多索引、需求复杂的全文检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191068/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com