【问题标题】:Index Analyzed and not Analyzed?索引分析而不分析?
【发布时间】:2014-05-29 11:50:48
【问题描述】:

我在我的应用程序中使用 Lucene.net 进行索引和搜索,我想向用户提供 NORMAL 和正则表达式搜索,但对于正常搜索,我需要以分析的方式索引我的文档,而对于正则表达式,我需要做它通过未分析的方式进行,并且我无法将同一文档索引两次以支持两种搜索类型...帮助我 Pravin thokal

【问题讨论】:

  • 如何为同一个索引文档使用 2 个不同的字段——一个已分析字段,一个未分析字段?
  • 嗨,这就是我们目前正在做的事情,它会产生冗余......
  • 这种冗余会导致什么样的问题?这听起来像是必要的冗余。
  • Space ,假设我有 100 GB 的文档,它会创建 100 GB 的索引文件,如果我将它存储两次 Analyzed 和 Not Analyzed 。如果我只通过一种方式进行索引,我认为我可以节省一些空间,并且我会加快搜索和检索的速度......

标签: indexing lucene.net


【解决方案1】:

我强烈建议您对文档进行两次索引:第一次作为已分析字段,第二次作为未分析字段。 Lucene 的冗余并不是一件坏事。 Lucene 使用inverted index,因此当索引增长时,通常只能通过指针来实现,这通常是低成本的存储方式。 (我在这里过于简单化了。还有其他因素需要考虑,例如有多少独特的术语以及您正在执行什么样的分析。)

仅对文本编制一次索引会导致搜索性能下降很多。为什么?您必须存储未分析的文本,这意味着您的“正常搜索”必须在搜索时间执行分析。 (为什么要存储未分析的文本?如果存储已分析的文本,您将无法在正则表达式搜索中取消分析它。)

根据您的情况,您可能需要探索一个中间地带。例如,也许您的正则表达式搜索可以容忍一点分析(例如不区分大小写),而您的正常搜索可能不需要那么多分析(例如保留干扰词)。

【讨论】:

  • 好的 Keith 我会考虑您的建议,非常感谢您的跟进... pravin thokal
猜你喜欢
  • 2023-03-25
  • 2014-02-25
  • 1970-01-01
  • 2011-03-20
  • 2017-10-08
  • 2014-09-02
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
相关资源
最近更新 更多