4

私は初心者の lucene ユーザーで、今いくつかの基本を取得しようとしています。

私は3つのファイルを持っています:

  • apache_empty.txt(空のファイル)、
  • apache.txt(多くの'apache'トークンが含まれています)、
  • other.txt(トークンを 1 つだけ含む - 'apache')

検索しようとすると と'apache'しか出 こないのですが、検索した単語が名前に含まれるファイルも取得したいのです...apache.txtother.txtapache_empty.txt

そして、それがインデックスにドキュメントを追加する方法です:

protected Document getDocument(File f) throws Exception 
{
  Document doc   = new Document();
  Field contents = new Field("contents", new FileReader(f));
  Field parent   = new Field("parent",   f.getParent(), Field.Store.YES, Field.Index.NOT_ANALYZED);
  Field filename = new Field("filename", f.getName(), Field.Store.YES, Field.Index.ANALYZED);
  Field fullpath = new Field("fullpath", f.getCanonicalPath(), Field.Store.YES, Field.Index.NOT_ANALYZED);
  filename.setBoost(2.0F);
  doc.add(contents);
  doc.add(parent);
  doc.add(filename);
  doc.add(fullpath);
  return doc;
}

lucene インデックスにファイル名も含める方法は?

4

1 に答える 1

6

apache*ワイルドカードを有効にするには、ファイル名と一致するapache_empty完全な構文を検索する必要があります。Apache Lucene Query Parserも参照してください。

別の方法として、使用するアナライザーにアンダースコアを単語区切りとして含めることもできます。

于 2012-09-26T11:16:08.557 に答える