我对 Lucene 很陌生,最近遇到了一个问题。我有一个看起来像这样的 lucene 文档:
--- type ---
gene
--- id ---
xla:379474
--- alt_id ---
emb:BC054227
gb:BC054227
ncbi-geneid:379474
ncbi-gi:148230166
rs:NM_001086315
rs:NP_001079784
unigene:Xl.24622
xla:379474
我创建了下面的查询以检索该文档。它适用于altId = 379474
但不适用于altId = ncbi-geneid:379474
or Xl.24622
。我猜想 altId 必须被转义并且String altId = QueryParser.escape(altId)
没有运气。这是查询的预期行为吗?我错过了什么?
Query query1 = new TermQuery(new Term("type", "gene"));
Query query2 = new TermQuery(new Term("alt_Id", altId));
BooleanQuery query = new BooleanQuery();
query.add(query1, BooleanClause.Occur.MUST);
query.add(query2, BooleanClause.Occur.MUST);
顺便说一句,我正在运行 lucene v3.0。