Linq to Lucene: "Предикат Lucene Term не может быть пустой строкой".

Я пытаюсь внедрить Linq To Lucene в свой проект, но когда пытаюсь что-то искать, я всегда получаю Enumeration yielded no results результат и когда я отлаживаю и пытаюсь открыть мой [IndexContext].[TableProperty] в Watch окно, я получаю это сообщение:

Предикат Lucene Term не может быть пустой строкой.

Я пытался найти это в Google, но, по-видимому, он не дал результатов!

Кто-нибудь когда-нибудь сталкивался с этим сообщением раньше? И как я могу это исправить? потому что в настоящее время он не возвращает никаких данных

[Обновить]

Видимо проблема в том, когда я использую один из методов расширения (Between, Match, Like и т. д.), которые находятся в Lucine.Linq.Extensions, Возьмите следующий пример:

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 метод extension на самом деле возвращает результат, тогда как другие (Search, Likeне Я все еще борюсь с этой проблемой

1 ответ

Я также использую его в своем проекте, и я считаю, что это сообщение показывает "Предикат Lucene Term не может быть пустой строкой", потому что Lucene не принимает пустой термин в качестве критерия поиска.

Вот что случилось со мной:

(База данных Northwind) Когда я пытался искать

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 не может быть пустой строкой". Ошибка.

Надеюсь, поможет

Другие вопросы по тегам