【问题标题】:Linq to Lucene: "The predicate of a Lucene Term can not be the empty string."Linq to Lucene:“Lucene Term 的谓词不能是空字符串。”
【发布时间】:2009-10-18 19:02:25
【问题描述】:

我正在尝试在我的项目中实现 Linq To Lucene,但是在尝试搜索某些内容时,我总是得到 Enumeration yielded no results 结果,当我调试并尝试在 Watch 窗口中打开我的 [IndexContext].[TableProperty] 时,我收到这条消息:

Lucene Term 的谓词不能 是空字符串。

我已尝试在 Google 中搜索此内容,但显然它没有返回任何结果!

以前有人遇到过这个消息吗?我该如何解决?因为目前它没有返回任何数据

[更新]

显然问题出在我使用Lucine.Linq.Extensions 中的一种扩展方法(BetweenMatchLike 等...)时。举个例子:

var db = new MusicRepo_DB_IndexContext(@"C:\MusicRepoDB_index",
                                       new MusicRepo_DBDataContext());

以下查询返回结果:db.Artists.Where(a => a.Name == "Camel");

但这个没有:db.Artists.Where(a => a.Search("Camel"));

[更新]

经过进一步测试,我意识到Match 扩展方法确实返回了结果,而其他方法(SearchLike)则没有。我还在为这个问题苦苦挣扎

【问题讨论】:

    标签: c# linq-to-sql lucene lucene.net linq-to-lucene


    【解决方案1】:

    我也在我的项目中使用它,我相信这条消息会显示“Lucene 术语的谓词不能是空字符串。”,因为 Lucene 不接受空术语作为搜索条件。

    这就是发生在我身上的事情:

    (罗斯文数据库) 当我尝试搜索时

    var mmCustomers = from c in dbi.Get<Customer>()
                          where c.ContactTitle == "Marketing Manager"                       
                          select c;
    

    它工作正常,但是当我尝试时:

    var mmCustomers = from c in dbi.Get<Customer>()                       
                          select c;
    

    它显示“Lucene Term 的谓词不能是空字符串”。错误。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      相关资源
      最近更新 更多