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