2012-07-21 36 views
2

我們正在使用SolrNet 3.6開發ASP.NET MVC3 C#。 我們已經使用動態fields.Solr索引已成功創建與適當的數據,它在Solr管理員以及我們的應用程序中也完美地工作,也沒有動態字段。
我們使用QueryOption和所有這些檢索了所有靜態字段,如Id,Name等。如何檢索SolrNet 3.6中的動態字段?

但我們不知道如何檢索動態字段?

那麼請向我們建議如何檢索它?

回答

6

使用SolrNet訪問動態字段非常簡單。下面是繪製一組動態字符串字段的例子:

以下字段在schema.xml中定義

<field name="dynamicFields_*" fieldType="string" stored="true" indexed="true" /> 

然後讓我們假設你已經索引的文檔具有以下字段:

dynamicFields_item1 
dynamicFields_item2 

你會那麼下面的屬性添加到您的C#類:

public class IndexItem 
{ 
    ... 

    [SolrField("dynamicFields_")] 
    Dictionary<string, string> DynamicFields { get; set;} 

    .... 
} 

然後,一旦你已經Solr的查詢,並有IndexItem類,您可以訪問動態數據字段是這樣的:

//already have gotten the indexItem before here 

var item1Value = indexItem.DynamicFields["item1"]; 
var item2Value = indexItem.DynamicFields["item2"]; 

希望這將有助於你得到動態的領域在你的代碼的工作...

+0

我正在使用Solr 4.0並掙扎於一個錯誤。我已經實現了你的建議。錯誤是:無法將類型'System.Collections.ArrayList'的對象轉換爲類型'System.String'。可能是什麼問題呢???是與更新版本的solr或什麼有關? – 2012-12-27 10:18:58

2

您可以使用Luke Handler來檢索所有索引字段(以及更多) - 靜態和動態。例如。 http://localhost:8983/solr/admin/luke

+0

你有爲此更改SolrQueryExecutor。請參閱http://stackoverflow.com/questions/13393700/how-we-changes-standard-query-handler – cuh 2014-01-17 13:23:39