Tag: lucene.net

Lucene .NET搜索结果

我正在使用此代码进行索引: public void IndexEmployees(IEnumerable employees) { var indexPath = GetIndexPath(); var directory = FSDirectory.Open(indexPath); var indexWriter = new IndexWriter(directory, new StandardAnalyzer(Version.LUCENE_29), true, IndexWriter.MaxFieldLength.UNLIMITED); foreach (var employee in employees) { var document = new Document(); document.Add(new Field(“EmployeeId”, employee.EmployeeId.ToString(), Field.Store.YES, Field.Index.NO, Field.TermVector.NO)); document.Add(new Field(“Name”, employee.FirstName + ” ” + employee.LastName, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.NO)); document.Add(new Field(“OfficeName”, employee.OfficeName, Field.Store.YES, […]

lucene.net排序不工作访问冲突

我试图在lucene中对结果进行排序 但是我一直收到这个错误 Search.dll中出现未处理的“System.AccessViolationException”类型exception 附加信息:尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。 我已经尝试将Field.Index设置为分析而未分析但没有快乐。 Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29); var parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, “Title”, analyzer); Query query = parser.Parse(searchTerm.Trim() + “*”); var searcher = new IndexSearcher(directory, true); var sortBy = new Lucene.Net.Search.Sort(new Lucene.Net.Search.SortField(“Title”, Lucene.Net.Search.SortField.STRING, true)); var filter = new QueryWrapperFilter(query); // TopDocs topDocs3 = searcher.Search(query, filter, 500,sortBy); // TopDocs topDocs = searcher.Search(query,500); […]

如何在asp.net中的Lucene.net进行模糊搜索?

我们已经创建了lucene.net索引并基于此URL http://sonyblogpost.blogspot.in/进行搜索。 但我们希望输出如下。 例如:如果我搜索“精选”,我想显示相关术语,如“精选”,“特色”,“function”。 任何人都可以帮助我。 谢谢。

Lucene Hightlighter有时会莫名其妙地返回空白片段

在过去的几天里,我一直在研究Lucene文档搜索程序,到目前为止,一切都进展顺利。 我正在尝试使用Lucene.Net.Highlight.Highlighter类来显示搜索结果的相关片段,但它不能始终如一地工作。 大多数情况下,调用Highlighter.GetBestFragments()完全符合我的预期(显示其中包含给定查询字符串的相关文本片段),但有时它只返回一个空字符串。 我已经三次检查我的输入,我可以validation我正在使用的查询字符串是否存在于输入文本中,但是荧光笔有时会随意返回一个空字符串。 这个问题是可以重现的; 返回空白片段的文档在使用相同查询时将继续返回空白片段,而具有合法片段的文档将继续具有合法片段。 但是,问题不是特定于文档的。 某些查询返回文档的有效片段,其他查询返回同一文档的空字符串。 问题似乎也与我的分析仪无关; 问题出现在我是使用StandardAnalyzer还是SnowballAnalyzer 。 经过几个小时的探索,我无法在查询/文档中找到任何失败的模式,而不是那些有效的模式。 请记住,这是在使用完全相同的查询从Lucene索引中专门撤回的文档上发生的。 这意味着Searcher能够在目标文档中找到相关的查询字符串,但Highlighter不能。 这是Lucene的一个错误吗? 如果是这样,我该如何解决呢? 我的代码: private static SimpleHTMLFormatter _formatter = new SimpleHTMLFormatter(“”, “”); private static SimpleFragmenter _fragmenter = new SimpleFragmenter(50); … { using (var searcher = new IndexSearcher(analyzerInfo.Directory, false)) { QueryParser parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, “Text”, analyzerInfo.Analyzer); parser.SetMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE); //build query BooleanQuery booleanQuery = […]

Lucene.Net – IndexWriter.SetMergedSegmentWarmer

任何人都有一个如何在Lucene.Net中使用IndexWriter.SetMergedSegmentWarmer的例子? 当我尝试像…… IndexWriter.IndexReaderWarmer warmer = new IndexWriter.IndexReaderWarmer(); indexWriter.SetMergedSegmentWarmer(warmer); 我明白了 无法创建抽象类或接口的实例’Lucene.Net.Index.IndexWriter.IndexReaderWarmer’

Lucene.NET共享主机

我正在尝试让Lucene.NET在共享托管环境中工作。 关于codeproject的Mascix概述了他如何在godaddy上工作。 我在isqsolutions上尝试这个。 他发布的两个示例在我的本地计算机上运行良好,并且在共享主机服务器上都抛出相同的错误: Compiler Error Message: CS0246: The type or namespace name ‘Lucene’ could not be found (are you missing a using directive or an assembly reference?) Line 1: Line 2: Line 3: Line 4: Line 5: 我尝试在web.config中添加对Lucene.NET assambly的直接引用,如下所示: 但这也引发了自己的错误。 我想我的问题是:我错过了一些简单的东西,还是服务器端设置导致这根本不起作用?

Lucene.net字段包含多个值以及要搜索的人员

任何人都知道搜索包含多个值的字段的最佳方法是什么? string tagString = “”; foreach(var tag in tags) { tagString = tagString += “:” + tag; } doc.Field(new Field(“Tags”, tagString, Field.Store.YES, Field.Index.Analyzed); 假设我想搜索所有标记为“csharp”的文档,谁能最好地实现这个?

Lucene.net和部分“开头”短语搜索

我正在寻找在大量城市名称上构建一个自动完成的文本框。 搜索function如下:我希望在多词短语中搜索“开始”。 例如,如果用户输入“chicago he”,则只需返回“Chicago Heights”等位置。 我正在尝试使用Lucene。 我在理解如何实施这个问题时遇到了问题。 我已经尝试过我认为应该有效的方法: 我用KeywordAnalyzer索引了位置(我已尝试过TOKENIZED和UN_TOKENIZED): doc.Add(new Field(“Name”, data.ToLower(), Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.NO)); 并通过以下方式搜索它们(我还尝试了各种其他查询/分析器/等): var luceneQuery = new BooleanQuery(); var wildcardQuery = new WildcardQuery(new Term(“Name”, “chicago hei*”)); luceneQuery.Add(wildcardQuery, BooleanClause.Occur.MUST); 我没有得到任何结果。 非常感谢任何建议。

为什么Lucene.Net索引器抛出System.IO.IOException未处理?

有时会抛出exception,说文件write.lock不能被使用,因为它被另一个进程使用,但这是一个非常简单的Lucene.Net测试应用程序,没有其他进程使用它,任何想法如何也许 例外情况如下: System.IO.IOException was unhandled HResult=-2147024864 Message=The process cannot access the file ‘c:\temp\luceneidx\write.lock’ because it is being used by another process. Source=mscorlib StackTrace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.InternalDelete(String path, Boolean checkHost) at System.IO.File.Delete(String path) at Lucene.Test.LuceneSearchInternal.get__directory() in C:\Lucene.Test\LuceneSearchResumes.cs:line 35 抛出exception的相关代码是, var lockFilePath = Path.Combine(_luceneDir, “write.lock”); if (File.Exists(lockFilePath)) File.Delete(lockFilePath); // THROWS exception sometimes 代码主要来自这篇文章 […]

如何自定义Lucene.NET以搜索带符号的单词而不区分大小写(例如“C#”或“.net”)?

标准分析仪不起作用。 根据我的理解,它将其更改为搜索c和net WhitespaceAnalyzer可以工作,但它区分大小写。 一般规则是搜索应该像谷歌一样工作,所以希望它是一个配置的东西,考虑.net , c#已经存在一段时间或者有一个解决方法。 根据下面的建议,我尝试了自定义的WhitespaceAnalyzer但是如果关键字用逗号分隔,并且没有正确处理空格,例如 java,.net,c#,oracle 搜索时不会返回不正确的内容。 我遇到了PatternAnalyzer ,它用于分割令牌,但无法弄清楚如何在这种情况下使用它。 我正在使用Lucene.Net 3.0.3和.NET 4.0