我们公司有一个"MyAccount“,我们想把知识库放在后面。我们有一个CRM系统,其中记录了帮助呼叫,并将一些知识库文章写入数据库。主问题(相同的基本帮助呼叫)使用关键字进行标记。我们还在一个受保护的目录中为我们销售的软件提供CHM帮助文件(有些用户从不使用内部帮助系统,他们会上网)、PDF白皮书和教程。我想购买,或快速建立一个ASP.NET解决方案,其中用户可以搜索数据库,以显示帮助文章,也显示教程或白皮书或帮助文件从化学管理。
要求:它必须看起来像我们的网站。我有一个母版页,所以任何内容页面必须相当多的white...no图形,颜色等。
有谁知道第三方搜索引擎,或者如何使用Lucene.NET从现有数据库构建搜索索引数据库的示例和一些源代码?
发布于 2010-01-29 06:29:40
您可以使用Lucene .Net构建这样的解决方案。将您的文档保存在数据库中(如前所述),并使用所需的Lucene.Net文档进行索引。
Lucene将在文件系统中有自己的索引。
您需要在DB中的文档和Lucene索引之间提供同步,因此当DB中的文档发生更改时,您需要使用Lucene对其进行重新索引。同步( DB和Lucene索引之间的匹配)可以基于DB中的某个唯一键值(例如: ID)。
因此,当你想要将一些文档添加到Lucene索引中时,你可以索引文档内容(你不需要在Lucene中保存内容),并在Lucene中用来自DB的唯一键值(比方说ID)‘保存’它。
然后,您可以搜索Lucene索引并获得匹配的文档ID列表。并通过这些ID从您的数据库中检索它们并显示给用户。
下面是我的项目中的示例方法,它将文档添加到Lucene索引中。方法参数中的InformationAsset是我想要索引的DB文档。这个方法创建的'Lucene文档‘只有很少的’field‘:
Lucene的字段‘字段’:文件的内容从数据库(方法argument)
public void AddToIndex(Entities.InformationAsset infAsset,IList additionalKeywords) {分析器分析器=新StandardAnalyzer();IndexWriter indexWriter =新文档(IndexWriter,分析器,false);文档文档=新文档();// string z dodatkowymi slowami po ktorych ma byc tez zindeksowana tresc string addKeysStr = "";if(additionalKeywords != null) { foreach (additionalKeywords中的关键字关键字){ addKeysStr +=“”+ keyword.Value;}} addKeysStr +=“”+ m_RootKeyword;string contentStr;contentStr = infAsset.Title +“”+ infAsset.Content + addKeysStr;// indeksacja z trescia字段字段=新字段(LuceneFieldName.Content,contentStr,Field.Store.NO,Field.Index.TOKENIZED,Field.TermVector.YES);//极z Id字段fieldId =新字段(LuceneFieldName.Id,infAsset.Id.ToString(),Field.Store.YES,Field.Index.UN_TOKENIZED);//极地发布日期字段fieldPubDate =新字段(LuceneFieldName.PublishDate,DateTools.DateToString(infAsset.PublishingDate,DateTools.Resolution.MINUTE),Field.Store.YES,Field.Index.NO_NORMS,Field.TermVector.YES);//极点DataSource //极点z Id字段fieldDataSource =新字段(LuceneFieldName.DataSourceId,infAsset.DataSource.Id.ToString(),Field.Store.YES,Field.Index.UN_TOKENIZED);doc.Add(字段);doc.Add(fieldId);doc.Add(fieldPubDate);doc.Add(fieldDataSource);newIndexWriter.AddDocument(文档);indexWriter.Optimize();indexWriter.Close();}
https://stackoverflow.com/questions/2158245
复制相似问题