1

スコアではなく、Lucene.Net インデックスの特定のフィールドでクエリ結果を並べ替える方法を見つけました。必要なのは、インデックス化されているがトークン化されていないフィールドだけです。ただし、「a」や「the」などのストップワードを無視してそのフィールドをソートする方法がわかりません。たとえば、次の本のタイトルは次のように昇順でソートされます。

  1. 帽子の中の猫
  2. ホートンは誰かを聞く

そのようなことは可能ですか?

Lucene.Net 2.3.1.2 を使用しています。

4

5 に答える 5

1

Lucene から返された結果を、独自のカスタム オブジェクトのコレクションにラップします。次に、追加の情報/コンテキスト情報を入力し (ハイライター クラスなどを使用して一致のスニペットを引き出します)、さらにページングを追加します。同様のルートをとった場合は、「結果」クラス/オブジェクトを作成し、SortBy プロパティのようなものを追加して、並べ替えたいフィールドを取得し、ストップ ワードを取り除いてから、このプロパティに保存します。代わりに、そのプロパティに基づいてコレクションを並べ替えるだけです。

于 2008-09-15T20:42:07.890 に答える
0

句読点を削除して単語を停止するには、アナライザーでフィールドをトークン化する必要があるというキャッチ22があるようですが、トークン化されたフィールドで並べ替えることはできません。それでは、トークン化せずにストップワードを取り除くにはどうすればよいですか?

于 2008-09-15T20:02:00.810 に答える
0

インデックスを作成するときは、並べ替えたい単語だけを含むフィールドを作成し、取得するときはそのフィールドで並べ替えますが、完全なタイトルを表示します。

于 2008-09-15T19:40:24.403 に答える
0

Lucene を使用してからしばらく経ちましたが、ストップ ワードが既に削除された状態で、そこに値を並べ替えて格納するためのフィールドを追加することになると思います。おそらく、同じアナライザーを使用してこの値を生成できます。

于 2008-09-15T19:41:17.617 に答える
0

検索については、並べ替えオプション リンクを使用した lucene .net インデックスの検索が、問題を解決するのに興味深いことがわかりました。

于 2009-07-29T13:57:35.673 に答える