我正在使用Lucene.net在我的应用程序中进行索引和搜索,我想向用户提供NORMAL和正则表达式搜索但是对于正常搜索我需要以分析方式索引我的文档并且对于正则表达式我需要做它通过Not Analyzed方式,我不能两次索引同一文件以支持两种搜索类型...帮我Pravin thokal
答案 0 :(得分:0)
我强烈建议您将文档索引两次:首先作为分析字段,然后作为非分析字段。 Lucene的冗余并不是件坏事。 Lucene使用inverted index,因此当索引增长时,通常只能通过指针来实现低成本存储。 (我在这里过于简单化了。还有其他因素需要考虑,比如有多少独特术语以及你正在进行什么样的分析。)
仅将文本编入索引一次将导致搜索性能下降得更慢。为什么?您必须存储未分析的文本,这意味着您的“正常搜索”必须在搜索时执行分析。 (为什么要存储未分析的文本?如果存储分析的文本,则无法对正则表达式搜索进行取消分析。)
根据您的情况,您可能有探索的中间地带。例如,您的正则表达式搜索可能会容忍一些分析(例如不区分大小写),也许您的正常搜索不需要那么多分析(例如保留噪音词)。