0

Lucene を使用するのはこれが初めてで、次のようなテキスト ファイルがあります。

id,name,address,hobby
1,namm1,address1,football
2,namm2,address2,football
3,namm3,address3,football
4,namm4,address4,football
5,namm5,address5,football
6,namm6,address6,basketball
7,namm7,address7,basketball
8,namm8,address1,football
9,namm9,address8,swimming
...

上記のファイルは、1,000,000 行を含むテキスト ファイルです。ここで、住所がaddress1で趣味がであるレコードをファイルから見つけてfootball、次のようにレコードを別のファイルに入れたいと思います。

1,namm1,address1,football
8,namm8,address1,football
...

最初のファイルは非常に大きいため、次から次へとレコードを見つけるのは非常に遅くなります。Lucene を使用して、最初のファイルのインデックスを (アドレスと趣味に応じて) 作成したいと考えています。address1すると、住所がで趣味がのレコードをすぐに見つけてfootball、新しいファイルに入れることができます。Lucene でプログラミングしたことはありません。誰が私に同様の例を与えることができますか?

4

2 に答える 2

0

彼がアナライザーを書く必要はまったくないと思います。多くの組み込みアナライザーの 1 つを使用して、Java コードを使用して各行を解析し、各値を適切なフィールドに入れることができます。

于 2012-07-01T21:06:59.610 に答える
0

これはとても簡単です。Lucene でファイルをインデックス化すると、独自の「アナライザー」を定義できます。簡単に言うと、アナライザーはソースから情報を抽出し、それを lucene の「ドキュメント」の「フィールド」に入れます。

何かを検索するとき、Lucene が考慮すべきフィールドを定義できます。

したがって、あなたの場合の解決策は、各列をフィールドに入れるアナライザーを作成することです。クエリで and を使用してMultiFieldQueryParser、フィールド名を指定します。あなたの例では、クエリは次のようになります

address:address1 hobby:football
于 2012-06-30T19:51:47.303 に答える