Tag: lucene

Lucene IndexWriter添加文档很慢

我写了一个小循环,在IndexWriter中添加了10,000个文档,并且它一直都是这样做的。 有没有其他方法可以索引大量文档? 我问,因为当它上线时,它必须加载15,000条记录。 另一个问题是,当重新启动Web应用程序时,如何防止必须再次加载所有记录? 编辑 这是我使用的代码; for (int t = 0; t < 10000; t++){ doc = new Document(); text = "Value" + t.toString(); doc.Add(new Field("Value", text, Field.Store.YES, Field.Index.TOKENIZED)); iwriter.AddDocument(doc); }; 编辑2 Analyzer analyzer = new StandardAnalyzer(); Directory directory = new RAMDirectory(); IndexWriter iwriter = new IndexWriter(directory, analyzer, true); iwriter.SetMaxFieldLength(25000); 然后是添加文档的代码; iwriter.Close();

避免在重建期间删除当前的Lucene.NET索引

我是Lucene.NET的新手,但我使用的是为Sitecore CMS构建的开源工具 ,它使用Lucene.NET来索引来自CMS的大量内容。 我昨天确认当我重建我的索引时,当前的索引文件擦除干净,所以任何依赖索引的东西都没有大约30-60秒的数据(完整索引重建的时间)。 在新索引完全重建之前,是否有最佳实践或方法使Lucene.NET不会覆盖当前索引文件? 我基本上以为我想要写入新的临时索引文件,当重建完成时,这些文件会覆盖当前索引。 我在说什么的例子: 建立新的指数(约30秒) 索引有大约500个文件 使用代码访问索引中的数据并在网站上显示 重建指数(~30秒) 现在读取数据索引的任何代码都不会返回任何内容,因为索引文件被覆盖了; 导致网站没有显示任何数据 重建完成:数据现在再次可用,数据返回网站 提前致谢

Lucene.Net模糊搜索速度

对不起,我希望得到Lucene经验丰富的人的帮助。 现在我们在我们的应用程序Lucene.Net 3.0.3中使用~2.500.000项目进行索引和搜索。 每个实体包含27个可搜索字段,以这种方式添加到索引:new Field(key,value,Field.Store.YES,Field.Index.ANALYZED)) 现在我们有两个搜索选项: 使用模糊搜索仅搜索4个字段 使用精确搜索按4-27个字段搜索 我们有一个搜索服务,每周自动搜索约53000人,如“Bob Huston”,“Sara Conor”,“Sujan Hong Uin Ho”等。 因此,我们在选项1中遇到慢速搜索速度, s an average 4-8 sec in searcher.Search and it搜索速度为s an average 4-8 sec in searcher.Search and it是我们的主要问题。 搜索示例代码: var index = FSDirectory.Open(indexPath); var searcher = new IndexSearcher(index, true); this.analyzer = new StandardAnalyzer(Version.LUCENE_30, new HashSet()) var queryParser = new MultiFieldQueryParser(Version.LUCENE_30, queryFields, […]

在Lucene.net 2.9.2中突出显示整个句子

目前我正在使用Lucene.net 2.9.2框架。 由于我的搜索,我希望获得带有突出显示的文本片段的结果页面(asp.net)。 我希望所选片段是一个完整的句子而不仅仅是几个单词。 例如,如果我有文字: Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur […]

如何使用Lucene.Net创建构面

我正在构建一个C#windows窗体应用程序,用于搜索数据库并显示结果。 我试图找到一个如何用Lucene创建方面的指南,但似乎我不能。 我正在创建索引,我能够搜索数据库,但我想为结果创建构面。 是否有任何指南或项目可供使用? 编辑这里是到目前为止我的项目的链接https://github.com/assignment128A-adopse/Assignment 任何帮助/建议都会有所帮助

Lucene和特殊人物

我使用Lucene.Net 2.0来索引数据库表中的某些字段。 其中一个字段是“名称”字段,允许使用特殊字符。 当我执行搜索时,它找不到包含带有特殊字符的术语的文档。 我将我的字段编入索引: Directory DALDirectory = FSDirectory.GetDirectory(@”C:\Indexes\Name”, false); Analyzer analyzer = new StandardAnalyzer(); IndexWriter indexWriter = new IndexWriter(DALDirectory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); doc.Add(new Field(“Name”, “Test (Test)”, Field.Store.YES, Field.Index.TOKENIZED)); indexWriter.AddDocument(doc); indexWriter.Optimize(); indexWriter.Close(); 我搜索以下内容: value = value.Trim().ToLower(); value = QueryParser.Escape(value); Query searchQuery = new TermQuery(new Term(field, value)); Searcher searcher = new […]

Lucene RangeQuery没有适当过滤

我正在使用RangeQuery来获取介于0到2之间的所有文档。当我执行查询时,Lucene还给了我大于2的文档。 我在这里想念的是什么? 这是我的代码: Term lowerTerm = new Term(“amount”, minAmount); Term upperTerm = new Term(“amount”, maxAmount); RangeQuery amountQuery = new RangeQuery(lowerTerm, upperTerm, true); finalQuery.Add(amountQuery, BooleanClause.Occur.MUST); 这是我的索引中的内容: doc.Add(new Field(“amount”, amount.ToString(), Field.Store.YES, Field.Index.UN_TOKENIZED, Field.TermVector.YES));

Lucene – 短语中的通配符

我目前正在尝试使用Lucene来搜索索引中填充的数据。 我可以通过将其括在括号中来匹配精确的短语(即“处理文档”),但不能让Lucene通过执行任何类型的“处理文档*”来找到该短语。 最明显的区别是最后的通配符。 我目前正在尝试使用Luke来查看和搜索索引。 (解析时,它会在短语末尾删除星号) 在数据周围添加引号似乎是主要的罪魁祸首,因为搜索文档*会起作用,但“文档*”不会 任何帮助将不胜感激

我们可以在templateId中分配多个模板ID(就像我们在relatedId中那样),同时使用Lucene进行搜索?

我有五个复选框 全部搜索 模板1 模板2 模板3 模板4 如果用户选择Search All ,那么我们只需传递索引名称并获取结果,如果用户选择模板特定复选框之一,我们可以再次通过传递模板名称,但如果有两个模板中的任何一个复选框(或者可能是三)检查,然后? 我们可以管道分离templateID吗?

如何使用Lucene.Net执行“包含”搜索而不是“以’开头”

我们使用Lucene.NET在客户网站上实现全文搜索。 搜索本身已经有效但我们现在想要实现修改。 目前所有术语都附加了一个* ,这导致Lucene执行我将其归类为StartsWith搜索的内容。 在未来,我们希望有一个搜索执行像Contains而不是StartsWith 。 我们用 Lucene.Net 2.9.2.2 StandardAnalyzer 默认的QueryParser 样品: (Title:Orch*)匹配: Orchestra 但: (Title:rch*)不符合: Orchestra 我们希望第一个和第二个都能与Orchestra匹配。 基本上我想要与此问题中提到的完全相反,我不确定为什么这个人Lucene默认执行Contains而不是StartsWith : 为什么这个Lucene查询是“包含”而不是“startsWith”? 我们怎样才能实现这一目标? 我觉得它与分析仪有关,但我不确定。