0

フォルダーに Lucene インデックスを作成し、txt ファイルのコンテンツにインデックスを作成しています。ストップワードのインデックス作成を行わずにコンテンツを作成したいのですが、アナライザーを通過した後、実際には検索時にストップワードをオフにしましたが、すべてのテキスト インデックスが作成されました。私は以下のコードを置きます:

    IndexWriter writer = new IndexWriter(new SimpleFSDirectory(indexDir),
                        new SpanishAnalyzer(Version.LUCENE_36),
                        create,
                        IndexWriter.MaxFieldLength.UNLIMITED);
    if (!file.isHidden() && file.exists() && file.canRead()) {


                String fileName = file.getName();
                String type = Files.extension(file);
                if(type==null)
                {
                    type="";
                }
                Document d = new Document();

                d.add(new Field("Name",fileName,
                                Store.YES,Index.ANALYZED,Field.TermVector.YES));
                d.add(new Field("Type",type,
                                Store.YES,Index.ANALYZED));
                if(("txt".equals(type.toLowerCase())) || ("log".equals(type.toLowerCase())))
                {
                    String Content = Files.readFromFile(file,"ASCII");
        d.add(new Field("Content",Content,Store.YES,Index.ANALYZED, Field.TermVector.YES));
                }
    }

    writer.addDocument(d);

サンプルファイルの内容は「インストールディレクトリ」です。「a」、「to」、「of」の検索を実行しても何も見つかりません。これは、アナライザーを正常に通過したことを意味します。ツールを使用してインデックス LUKE を表示すると、フィールドに「to install to a directory of」が含まれていることがわかりますが、「install」と「directory」のみを含む Field.TermVector の外観を見て、表示したいのはそれだけですフィールド。

ありがとうございました。

4

2 に答える 2

2

SpanishAnalyzer() のデフォルト コンストラクタを使用しています。ストップ ワードを引数として使用する必要があります。

以下のようにインデクサーを作成します。

IndexWriter writer = new IndexWriter(new SimpleFSDirectory(indexDir),
                    new SpanishAnalyzer(Version.LUCENE_36, new HashSet<String>()),
                    create,
                    IndexWriter.MaxFieldLength.UNLIMITED);

ここでは、ストップ ワードの空のセットを渡しているため、ストップ ワードのないデフォルトをオーバーライドしています。lucene ストップワードの詳細については、こちらを参照してください。

于 2012-12-25T17:20:34.357 に答える
1

SpanishAnalyzer: の代わりに別のコンストラクターを使用してみてください

new SpanishAnalyzer(Version.LUCENE_36)
使用する
new SpanishAnalyzer(Version.LUCENE_36, Collections.emptySet())

于 2012-12-06T10:32:24.587 に答える