Apache Lucene中的多个属性查询

时间:2014-06-27 05:57:18

标签: java apache lucene

以下程序满足标题同时具有lucene和action的查询。如果我想搜索一个tubn,其中isbn(考虑到isbn不是唯一的)是1234并且title包含Lucene和dummies。 lucene是否为此提供了便利。

 StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
 Directory index = new RAMDirectory();

IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_40, analyzer);

 IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action", "193398817");
 addDoc(w, "Lucene for Dummies", "55320055Z");
 addDoc(w, "Managing Gigabytes", "55063554A");
  addDoc(w, "The Art of Computer Science", "9900333X");
   w.close();

 private static void addDoc(IndexWriter w, String title, String isbn) throws IOException {
Document doc = new Document();
doc.add(new TextField("title", title, Field.Store.YES));
doc.add(new StringField("isbn", isbn, Field.Store.YES));
 w.addDocument(doc);
 } 


String querystr = args.length > 0 ? args[0] : "lucene AND action";
Query q = new QueryParser(Version.LUCENE_40, "title", analyzer).parse(querystr);

1 个答案:

答案 0 :(得分:0)

从头到尾,我们构建了QueryParser类来仅查询title字段,因此为了生成同时针对title和{{1}的查询}}字段你必须使用像isbn之类的类和像MultiFieldQueryParser这样的查询,或者只是从多个{{1}手工构建你的title:(lucene AND dummies) AND isbn:1234(这是你最终得到的)对象。

我希望这会有所帮助