Lucene 4.6升级到8.0后,从不同的index_id(数据存储在不同的文件夹中)面临Lucene查询搜索的问题

时间:2019-10-30 06:43:08

标签: java lucene

  1. 将Lucene从4.6升级到8后,在搜索过程中遇到了问题。
  2. 我们正在创建5个不同的文件夹,以使用不同的索引ID进行索引(来自5个不同表的5个文件夹)。在搜索过程中,我们将结合所有这些数据进行显示。升级后,我们在搜索数据中面临问题。
  3. 当我们将过滤器应用于来自不同index_id的不同字段时。它仅搜索一个字段。
  4. 我发现“联接查询”有所不同。
JoinUtil.createJoinQuery(fromField, false, toField, Query, srch, ScoreMode.None);  
Query formation with different versions:
Lucene 4.6.0:
TermsQuery{field=case.id}
fromQuery=+(history.attribute:SExtendedAttribute1)  
 +history.modifiedBy:3ff0000000000000  (different parameter) Lucene 8.0.0:
TermsQuery{field=case.idfromQuery=+(history.attribute:SExtendedAttribute1)  
 +history.modifiedBy:3ff0000000000000}

fromQuery=+(history.attribute:SExtendedAttribute1)  
 +history.modifiedBy:3ff0000000000000  (different parameter is also visible.)

请向我建议,因为Lucene的新手无法预测它。

  1. 我在两个版本之间的Lucene-join.jar中的JoinUtil.createJoinQuery中发现了变化。
  2. 两个版本中的查询格式都不同。

具有不同版本的查询格式:

Lucene 4.6.0:
TermsQuery{field=case.id}
fromQuery=+(history.attribute:SExtendedAttribute1)  
+history.modifiedBy:3ff0000000000000  (different parameter) Lucene 8.0.0:
TermsQuery{field=case.idfromQuery=+(history.attribute:SExtendedAttribute1)  
 +history.modifiedBy:3ff0000000000000}

fromQuery=+(history.attribute:SExtendedAttribute1)  
 +history.modifiedBy:3ff0000000000000  (different parameter is also visible.)

JoinUtil.createJoinQuery(fromField, false, toField, Query, srch, ScoreMode.None);

运行Lucene Query后,应将过滤器应用于不同的字段(数据位于不同的文件夹中)。

1 个答案:

答案 0 :(得分:0)

为唯一列添加此doc值后,此问题已得到解决,我们通过该列应用联接查询。 new SortedDocValuesField(fieldName,new BytesRef(value));