私はelasticsearch/NESTを使ってpdfドキュメントのインデックスを作成しようとしています。ElasticSearch&attachment type(NEST C#)
ファイルのインデックスは作成されますが、検索結果は0ヒットで返されます。
私は(base64でエンコードされたコンテンツなし)のみのドキュメントIDとハイライトの結果
を返すために、検索結果を必要とする
ここではコードです:
私は、ここに任意の助けを感謝します
おかげで、
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を使用して(インストールおよびロードされたプラグインを確認しマッパーをアタッチメント)。それでも、私のpdfに含まれる言葉のヒットはありません。私はこの主題(stackoverflow&others)の答えをgoogled&カールの例だけで、使用例はC#/ NESTを使用していませんでした。 (ちょうどメモ:document.title( 'test.pdf')を検索するとき、私はドキュメントを元に戻しますが、 'test'を検索するとヒットしません。 –
私はこの明日のために統合テストを作成して質問に答えようとしています。私は早く答えることができません。 –
この質問の更新情報 – slimflem