3
請告訴我如何在字典字段上正確進行全文搜索。RavenDB全文搜索字典使用IRavenQueryable
我已經索引的所有翻譯的領域是這樣的:
public class TranTest
{
public string Id { get; set; }
public IDictionary<string, string> Trans1 { get; set; }
public IDictionary<string, string> Trans2 { get; set; }
//for index queries
public IDictionary<string, string> Trans { get; set; }
}
public class TranTestIndex : AbstractIndexCreationTask<TranTest>
{
public TranTestIndex()
{
Map = docs =>
from doc in docs
select new
{
_ = doc.Trans1.Select(x => CreateField("Trans_" + x.Key, x.Value)),
Trans2 = doc.Trans2.Select(x => CreateField("Trans_" + x.Key, x.Value)),
/* etc. */
};
Index("Trans_en", FieldIndexing.Analyzed);
Index("Trans_fi", FieldIndexing.Analyzed);
/* etc. */
}
}
這(查詢語句:Trans_en:(項))返回正確的結果:
var luceneQ = session.Advanced.LuceneQuery<TranTest, TranTestIndex>().Search(x => x.Trans["en"], searchTerms).ToList();
但我寧願使用IRavenQueryable API。不幸的API在一個類似的查詢產生InvalidOperationException異常:無法理解如何翻譯「x.Trans.get_Item(‘EN’)」到RavenDB查詢:
var ravenQ = session.Query<TranTest, TranTestIndex>().Search(x => x.Trans["en"], searchTerms);
results = ravenQ.ToList(); //Exception!
這是奇怪的,考慮到這完美的作品(翻譯於:Trans_en:「這個術語*」):
session.Query<TranTest, TranTestIndex>().Where(x => x.Trans["en"].StartsWith(searchTerms))
我對這個問題的問題:
- 我將如何創建廣告多項全文搜索查詢帶有IRavenQueryable linq API的字典字段?
- 是否可以將IRavenQueryable和IDocumentQuery合併爲一個查詢?
- 是否有另一種/更好的方式來創建索引?
- 它支持動態地添加新的語言
- 它支持搜索在具體的語言
- 搜索應該進行在多個領域