Lucene.NET查询+突出显示

问题描述:

我使用Umbraco并遇到了Lucene。我在Lucene上发现了很多代码和文章,但我仍然无法构建可接受的搜索。Lucene.NET查询+突出显示

我有很多字段可以搜索,例如。 “节点名称”和“bodyText的”

我需要什么:

  • 当我搜索“男鞋”,它应该只返回有两个“男人”和“鞋”的结果,但也回归nodeName只有“鞋子”,bodyText只有“男士”的页面。

  • 当我搜索“鞋子”时,我想要包含“鞋子”或“鞋子”的结果。但不是“锄头”如果可能的话

  • 提振节点名称领域

  • 获取bodyText的一个片段,包含匹配字(S)

  • 突出显示在页面名称和两个匹配的单词片段的正文文本

有没有人曾经这样做过?

+0

是Lucene的做所有你需要和* *得多多。然而,由于你看起来是一个新手,我推荐使用Apache Solr(这是一个围绕Lucene构建的搜索服务器,并提供了许多开箱即用的功能,而不需要修改内部文件) – Mikos 2011-06-10 11:29:27

+0

谢谢。那用Umbraco ...? – Aximili 2011-06-14 00:12:26

乔纳森Lathigee代码工作,这是最像Google那样我能找到到目前为止

http://our.umbraco.org/forum/developers/extending-umbraco/19329-Search-multiple-fields-for-multiple-terms-with-examine?p=0

这可能会让你开始。

var manager = ExamineManager.Instance; 
var searcher = manager.SearchProviderCollection["YOURSearcher"]; 
var query = manager.SearchProviderCollection["YOURSearcher"].CreateSearchCriteria(BooleanOperation.Or) 
    .Field("nodeName", keywords.Boost(10)) 
    .Or().Field("nodeName", keywords.Fuzzy()) 
    .Or().Field("bodyContent", keywords.Boost(5)) 
    .Or().Field("otherField", keywords.Boost(3)); 
var results = searcher.Search(query.Compile());
+0

谢谢Kieran!什么是关键字?它不是字符串吗?因为字符串没有Boost方法。 – Aximili 2011-06-10 06:54:20

+0

它是字符串的扩展,必须使用Examine.LuceneEngine.SearchCriteria; – Aximili 2011-06-14 00:57:46

+1

我搜索多个词,它永远不会返回任何结果 – Aximili 2011-06-14 01:27:03