0

プロジェクトに Linq To Lucene を実装しようとしていますが、何かを検索しようとすると常に結果が得られ、デバッグしてウィンドウでEnumeration yielded no results開こうとすると、次のメッセージが表示されます。[IndexContext].[TableProperty]Watch

Lucene Term の述語を空の文字列にすることはできません。

これをGoogleで検索してみましたが、どうやら結果が返されませんでした!

誰かが以前にこのメッセージに遭遇したことがありますか? どうすれば修正できますか?現在、データを返していないため

[アップデート]

どうやら問題は、にある拡張メソッド ( BetweenMatchなど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拡張メソッドは実際に結果を返すことがわかりましたが、他のメソッド ( SearchLike) はそうではありません。私はまだこの問題に苦しんでいます

4

1 に答える 1

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 の述語を空の文字列にすることはできません」と表示されます。エラー。

それが役に立てば幸い

于 2009-10-18T04:43:51.540 に答える