【问题标题】:Querying with Lucene in C#在 C# 中使用 Lucene 进行查询
【发布时间】:2012-06-19 12:43:10
【问题描述】:

我是 Lucene 的新手。我有一些存储在数据库中的业务对象。当我检索它们时,我使用 Lucene.NET 对它们进行索引,如下所示:

List<MyEntity> myResults = GetResultsFromDb();
using (var indexService = new IndexService(indexWriter))
{
  indexService.IndexEntities(myResults, p =>
  {
    var document = new Document();
    document.Add(new Field("ID", p.ID.ToString(), Field.Store.NO, Field.Index.NOT_ANALYZED));
    document.Add(new Field("Name", p.Name, Field.Store.NO, Field.Index.NOT_ANALYZED));
    document.Add(new Field("Description", p.Description, Field.Store.YES, Field.Index.ANALYZED));
    document.Add(new Field("IsActive", p.IsActive.ToString(), Field.Store.NO, Field.Index.NOT_ANALYZED));
    return document;
  });
}

我现在正在尝试搜索具有相似名称的业务对象。为了尝试执行该搜索,我正在使用以下内容:

  var indexSearcher = new DirectoryIndexSearcher(new   DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Index")), true);
  using (var searchService = new SearchService(indexSearcher))
  {
    TermQuery termQuery = new TermQuery(new Term("Name", GetNameToSearchWith()));                    

    SearchResult<MyEntity> searchResults = searchService.SearchIndex<CourseSearchResult>(termQuery, new MyEntityDefinition());
    foreach (CourseSearchResult searchResult in searchResults.Results)
    {
      filteredResults.Results.Add(searchResult);
      if (filteredResults.Count() >= 25)
        break;
    }
  }

当我执行查询时,我会检索结果。问题是,填充的唯一值是“名称”字段。对于 MyEntity,ID 是一个 Guid,Description 是一个字符串,IsActive 是一个可为空的布尔值。当我执行查询时,ID 始终为空 Guid,IsActive 标志始终为 null,Description 始终为空字符串。

我做错了什么?

【问题讨论】:

  • DirectoryIndexSearcher 不是标准 Lucene.Net 发行版的一部分。这是 SimpleLucene (simplelucene.codeplex.com) 库的一部分。我会尝试在没有 simplelucene 的情况下实现相同的搜索查询。如果它工作正常,然后尝试调试 simplelucene 没有按预期工作的原因。

标签: c# lucene.net


【解决方案1】:

实际上,您在文档中告诉 Lucene 不要将这些数据存储在文档中。对于要在搜索期间从文档中检索的所有字段,您应该将 Field.Store.NO 更改为 Field.Store.YES。

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 2011-07-07
    • 2015-04-23
    • 2019-07-05
    相关资源
    最近更新 更多