"int를 문자열로 변환"과 "정수를 문자열로 변환"모두에서 작동하도록 lucene 쿼리를 프레임해야합니다. 또한 일치하는 결과에서 용어 사이에 더 많은 단어가있을 수 있습니다. 예를 들어 "적절한 int를 잘 형식화 된 문자열로 변환하는 방법"을 예로들 수 있습니다.구문 순서가 slop이고 OR 절이있는 Lucene 쿼리
Query query = new SpanNearQuery(new SpanQuery[] {
new SpanTermQuery(new Term("title", "convert")),
new SpanTermQuery(new Term("title", "int")),
new SpanTermQuery(new Term("title", "string"))
},
50,
true);
return query;
을 다음과 같은 :
MultiPhraseQuery mpq = new MultiPhraseQuery();
mpq.setSlop(50);
mpq.add(new Term("title","convert"));
mpq.add(new Term[]{new Term("title","int"),new Term("title", "integer")});
mpq.add(new Term("title","string"));
return mpq;
또한 다음 중
BooleanQuery bq = new BooleanQuery();
bq.add(new TermQuery(new Term("title","convert")), Occur.MUST);
BooleanQuery idFilter = new BooleanQuery();
idFilter.setMinimumNumberShouldMatch(1);
idFilter.add(new TermQuery(new Term("title", "int")), BooleanClause.Occur.SHOULD);
idFilter.add(new TermQuery(new Term("title", "integer")), BooleanClause.Occur.SHOULD);
bq.add(idFilter, BooleanClause.Occur.MUST);
bq.add(new TermQuery(new Term("title","string")), Occur.MUST);
return bq;
아무도 내가 무엇을해야 할 것없는 나는 다음 시도했다. 누군가가 용어의 순서를 모두 포함하고 "OR"조건을 지정할 수있는 유효한 쿼리를 작성할 수 있습니까? 감사.
처음 두 번 시도하면 좋게 보이고 효과가 있어야합니다. 그러나 모든 것이 분석기에 달려 있기 때문에 분석 방법을 보려면 [Luke tool] (https://github.com/DmitryKey/luke)을 사용하여 색인을 열어야합니다. 이것은 당신에게 무엇이 잘못되었는지 더 많은 단서를 줄 것입니다. –
첫 번째 시도에서 int/integer에 대해 "OR"를 언급 할 방법이 없습니다. 두 번째 시도에서는 순서가 무시됩니다. –
나는이 질문에 대해 오해하고있다. 그리고 네, 두 번째 경우에는 질서 때문에 질서가 무시됩니다. –