在传统关系型数据库中我们经常会使用连接查询(join),而在Lucene中也提供了类似的功能。下面我们来看看如何在Lucene中如何使用连接查询以及与数据库连接查询之间的区别。
1.创建相关索引
final String indexDir = "/Users/chenfeihao/Desktop/lucene/index7";
final String idField = "id";
final String toField = "productId";
//@Test
public void createIndex() throws Exception{
Directory dir = FSDirectory.open(Paths.get(indexDir));
Analyzer analyzer = new StandardAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
config.setOpenMode(IndexWriterConfig.OpenMode.CREATE);
IndexWriter w = new IndexWriter(dir, config);
// 0
Document doc = new Document();
doc.add(new TextField("description", "random text", Field.Store.YES));
doc.add(new TextField("name", "name1", Field.Store.YES));
doc.add(new TextField(idField, "1", Field.Store.YES));
doc.add(new SortedDocValuesField(idField, new BytesRef("1")));
w.addDocument(doc);
// 1
Document doc1 = new Document();
doc1.add(new TextField("price", "10.0", Field.Store.YES));
doc1.add(new TextField(idField, "2", Field.Store.YES));