5

本の全文検索が必要なプロジェクトに取り組んでいます。一度に 1 冊の本を検索するだけでよく、本の最初から検索語のオフセットを取得する必要があります。Django/python を利用したサイトに必要ですが、Elasticsearch の方が優れていて高速だと思います。

これまでのところ、抽象レイヤー django-haystack を介してのみ Elasticsearch を直接使用したことはありません。

Edit1: ユーザーが検索しているテキストだけでなく、そのテキストにアクセスするためのリンクも表示する必要があります。基本的には、Mac のプレビューの検索ボックスのように動作するはずです。ユーザーは周囲のテキストで検索結果を表示し、それをクリックすると、テキストが配置されているブックの一部に JS によってリダイレクトされます。

4

1 に答える 1

2

シンプルなハイライトで十分ですか?そうでない場合でも、強引な解決策は、強調表示する pre_tags をプログラムで識別可能な値に設定し、そこからオフセットを計算することです。マッピングで term_vector を with_positions_offsets に設定して、lucene の fast-vector-highlighter を使用することで高速化します。

{
    "type_name" : {
        "content" : {"term_vector" : "with_positions_offsets"}
    }
}

それが受け入れられない場合は、この回答をチェックして、オフセットが内部に保存される方法について確認してください。

編集:あなたの編集に基づいて、オフセットがどのように役立つかわかりません。つまり、書式設定済みのテキストやその他の固定レイアウトを表示している場合を除き、レンダリングされたページのどこにオフセットが対応するかをどのように知ることができるでしょうか?

最も洗練された解決策は、pre_tags と post_tags を使用して、一致したテキストを要素にラップすることだと思います。次に、JavaScript を使用して各一致に ID を割り当て、場所を設定できる新しいフラグメント ID を作成します。

于 2013-08-28T10:00:42.883 に答える