【发布时间】:2011-02-12 21:01:01
【问题描述】:
我在使用 lucene 进行搜索时遇到问题。
首先,在 lucene 索引功能中,它适用于大文件。比如.pst文件,outlook邮件存储。它可以建立索引文件,包括.pst的所有信息。唯一的问题是有时太大,包含很多单词。
所以当我使用lucene搜索时,它只能处理这个索引文件的前面部分,如果一个词从索引文件的后面部分出来,它就找不到这个词,结果也没有命中。但是当我在调试时以愚蠢的方式将这个索引文件分成几个部分并搜索每个部分时,它可以很好地工作。
所以我想知道如何分离索引文件,搜索的大小应该是多少?
干杯,等待 4 回复。
++++++++++++++++++++++++++++++++++++++++++++++++++ +++
嗨,那里,跟随 Coady siad,我将长度设置为最大 2^31-1。但搜索结果仍然无法包含我想要的内容。 简单地说,我将 doc word 转换为 string array[] 进行分析, 一个 doc word 有 79680 个单词,包括空格和任何符号。 当我搜索某个单词时,它只返回 300 个计数,实际上它有超过 300 个结果。同样的原因,当我在文档后面搜索一个单词时,它也找不到。 /////////////设置长度
idexwriter.SetMaxFieldLength(2147483647);
/////////////////搜索
IndexSearcher searcher = new ndexSearcher(Program.Parameters["INDEX_LOCATION"].ToString()); Hits hits = searcher.Search(query);
这是我的代码,和其他人一样。当我需要计算文档中的每个单词命中时,我发现了问题。所以我也发现它无法在文档的后面搜索单词。
请帮我找一下,有没有设置搜索器长度的地方?你是怎么遇到这个问题的。
【问题讨论】:
-
您确定因为索引太大而导致结果丢失吗?也许您应该发布一些代码来说明这些单词是如何被索引的。
-
我想,您使用的是 2.4 或更低版本。在较新的版本中,需要明确指定可索引字段的长度以避免静默截断。科迪给出了正确的答案。