私の前のquestionの次に。私はluceneクエリの検索を今実行したいと思います。しかし、唯一のお気に入りである本で、参加の種類のある文書を検索する方法
public class User
{
public string Id { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
public class Book
{
public string Id { get; set; }
public string Title { get; set; }
}
public class BookFavorite
{
public string Id { get; set; }
public string UserId { get; set; }
public string BookId { get; set; }
}
だから、私はブックのフィールド「タイトル」に検索したい:
は、ここに私のモデルです。ですからBookとBookFavoriteとIndex Title Fieldの間で一種の結合をする必要があります。
私はMultiMap Indexを試しましたが、動作させるのが難しいと感じました。
助けが必要ですか?おかげさまで
EDIT:マルチマップインデックス
public class BookFavoriteSearchIndex : AbstractMultiMapIndexCreationTask<BookFavoriteSearchIndex.ReduceResult>
{
public class ReduceResult
{
public string BookId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Abstract { get; set; }
public string Tag { get; set; }
}
public BookFavoriteSearchIndex()
{
AddMap<Book>(books => from book in books
from tag in book.Tags
select new
{
BookId = book.Id,
Title = book.Title,
Description = book.Description,
Abstract = book.Abstract,
Tag = tag
});
AddMap<BookFavorite>(bfs => from bf in bfs
select new
{
BookId = bf.BookId,
Title = (string)null,
Description = (string)null,
Abstract = (string)null,
Tag = (string)null
});
Reduce = results => from result in results
group result by result.BookId
into g
select new
{
BookId = g.Key,
Title = g.Select(x => x.Title).FirstOrDefault(x => x != null),
Description = g.Select(x => x.Description).FirstOrDefault(x => x != null),
Abstract = g.Select(x => x.Abstract).FirstOrDefault(x => x != null),
Tag = g.Select(x => x.Tag).FirstOrDefault(x => x != null),
};
}
}
あなたは現在のマルチマップインデックスを投稿できますか? –
ちょうど編集されました。私はタグを含むすべてのthesesフィールドを検索する必要があることに注意してください。それは、1つの値だけではなく、すべてのタグ値をインデックスするように思われるので、別の問題になります... –