我想在我的.NET應用程序中使用Apache Solr作爲全文搜索引擎(通過SolrNet)。 我的應用程序有這個數據模式: 索引數據庫內的數據,文件存儲在文件系統
class Document
{
public int Id { get; set; };
public string Name { get; set; }
public DateTime CreateDate { get; set;}
public Attach[] Attaches { get; set; }
}
class Attach
{
public int Id { get; set; }
public Document Parent { get; set; }
//files are stored in filesystem, only path stored in database!
public string FilePath { get; set; }
}
現在,我想這個索引文件(Castle.Windsor使用):
_container.AddFacility("solr",
new SolrNetFacility("http://localhost:8983/solr"));
var solr = _container.Resolve<ISolrOperations<Document>>();
solr.Delete(SolrQuery.All);
var conn = _container.Resolve<ISolrConnection>();
var docs = from o in Documents
where o.Attaches.Count > 0
select o;
foreach (var doc in docs)
{
foreach (var att in doc.Attaches)
{
try
{
var file = Directory.GetFiles("C:\\Attachments\\" + doc.Id);
foreach (var s in file)
{
var a = File.ReadAllText(s);
conn.Post("/update", a);
}
}
catch (Exception)
{
throw;
}
}
}
solr.Commit();
solr.BuildSpellCheckDictionary();
如代碼來描述,我在尋找文件修補並直接從磁盤添加文件內容。但是,當我張貼文件的文本到Solr,我收到thie錯誤:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">400</int><int name="QTime">2</int>
</lst>
<lst name="error">
<str name="msg">Unexpected character 'Т' (code 1058/0x422) in prolog; expected '<'
at [row,col {unknown-source}]: [1,1]</str>
<int name="code">400</int>
</lst>
</response>
而且我有這樣的問題:
- 我可以張貼到索引純文本,而不是XML?
- 我必須序列化我的數據對象來索引它們嗎?如果是,我如何在「附加」類中表示文件?
佩奇,thnx爲答案。但我怎樣才能發送「文檔」類與所有細節「附加」類?我必須將它們序列化爲一個xml文件嗎?以及我如何設置Solr.NET _schema.xml_中的字段?在文檔中,**多值**字段描述爲** ICollection **,但在我的情況下,它是** ICollection **。 –
lewis
2013-02-19 18:58:45