我試圖用elasticsearch/NEST索引pdf文檔。ElasticSearch&附件類型(NEST C#)
該文件已建立索引,但搜索結果返回0次匹配。
我需要的搜索結果只返回文檔ID和高亮結果
(不以base64內容)
下面是代碼:
在這裏我要感謝所有幫助,
感謝,
class Program
{
static void Main(string[] args)
{
// create es client
string index = "myindex";
var settings = new ConnectionSettings("localhost", 9200)
.SetDefaultIndex(index);
var es = new ElasticClient(settings);
// delete index if any
es.DeleteIndex(index);
// index document
string path = "test.pdf";
var doc = new Document()
{
Id = 1,
Title = "test",
Content = Convert.ToBase64String(File.ReadAllBytes(path))
};
var parameters = new IndexParameters() { Refresh = true };
if (es.Index<Document>(doc, parameters).OK)
{
// search in document
string query = "semantic"; // test.pdf contains the string "semantic"
var result = es.Search<Document>(s => s
.Query(q =>
q.QueryString(qs => qs
.Query(query)
)
)
.Highlight(h => h
.PreTags("<b>")
.PostTags("</b>")
.OnFields(
f => f
.OnField(e => e.Content)
.PreTags("<em>")
.PostTags("</em>")
)
)
);
if (result.Hits.Total == 0)
{
}
}
}
}
[ElasticType(
Name = "document",
SearchAnalyzer = "standard",
IndexAnalyzer = "standard"
)]
public class Document
{
public int Id { get; set; }
[ElasticProperty(Store = true)]
public string Title { get; set; }
[ElasticProperty(Type = FieldType.attachment,
TermVector = TermVectorOption.with_positions_offsets)]
public string Content { get; set; }
}
此外,搜索證實,映射器,附件插件安裝並加載(使用es.yml:plugin.mandatory:映射器-attachments)。儘管如此,我的pdf中沒有包含任何詞語。我已經搜索了這個問題的答案(stackoverflow和其他人),只有捲曲的例子,沒有使用C#/ NEST的使用示例。 (只是一個註釋:當搜索document.title('test.pdf')時,我確實收到了文檔,但是在搜索'test'時沒有命中。 – 2013-02-09 20:54:23
只是爲了讓你知道我打算爲這個明天創建集成測試並回答這個問題。我無法早日回答。 – 2013-02-13 12:19:17
對此問題的任何更新? – slimflem 2013-09-07 19:40:12