以下程序满足标题同时具有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);
答案 0 :(得分:0)
从头到尾,我们构建了QueryParser
类来仅查询title
字段,因此为了生成同时针对title
和{{1}的查询}}字段你必须使用像isbn
之类的类和像MultiFieldQueryParser
这样的查询,或者只是从多个{{1}手工构建你的title:(lucene AND dummies) AND isbn:1234
(这是你最终得到的)对象。
我希望这会有所帮助