10 단어 정도의 거리에서 "X M"과 "Z K"를 어떻게 할 수 있습니까? SOLR에서 어구 간의 근접 검색을 수행하는 방법은 무엇입니까?
내가 단어 수준 "foo는 바"에 그것을보고 ~ 4 ( proximity link)내가 근접 pharses 수준에서 검색이 아닌 단어 수준에서 할 수 있습니까? 당신이 당신의 일치에 비트 느슨한되는 괜찮다면
10 단어 정도의 거리에서 "X M"과 "Z K"를 어떻게 할 수 있습니까? SOLR에서 어구 간의 근접 검색을 수행하는 방법은 무엇입니까?
내가 단어 수준 "foo는 바"에 그것을보고 ~ 4 ( proximity link)내가 근접 pharses 수준에서 검색이 아닌 단어 수준에서 할 수 있습니까? 당신이 당신의 일치에 비트 느슨한되는 괜찮다면
, 당신은 항상 다만이 작업을 수행 할 수 있습니다 : "X M Z K"~10
. 그것은 당신이 원하는 것과 일치합니다. 그러나 그것은 또한 "X A A M Z A A K"와 같은 다른 것들과도 일치합니다. 당신이 그것을 용인 할 수 있다면, 쉬운 대답이 있습니다. edismax 쿼리 파서의 pf2
and ps2
매개 변수를 살펴보고, 이들 매개 변수가 충분히 가까워 지는지 확인할 수도 있습니다.
surround query parser은 SpanQueries를 사용하여 디자인되었습니다. 그것은 쿼리 같아 보인다 : {!surround} 10W(1N(X, M), 1N(Z, K))
여기서 작동하지만, 뭔가를 놓치지 않는 한 서라운드는 중첩 된 괄호를 지원하지 않는 것처럼 보인다.
이러한 요구 사항이 적절하지 않은 경우 Solr 쿼리 구문을 사용하는 대신 Lucene API를 통해 쿼리를 직접 작성해야한다고 생각합니다.
SpanQuery termX = new SpanTermQuery(new Term("fieldName", "X"));
SpanQuery termM = new SpanTermQuery(new Term("fieldName", "M"));
SpanQuery termZ = new SpanTermQuery(new Term("fieldName", "Z"));
SpanQuery termK = new SpanTermQuery(new Term("fieldName", "K"));
SpanQuery phraseXM = new SpanNearQuery(new SpanQuery[] {termX, termM}, 0, true);
SpanQuery phraseZK = new SpanNearQuery(new SpanQuery[] {termZ, termK}, 0, true);
SpanQuery finalQuery = new SpanNearQuery(new SpanQuery[] {phraseXM, phraseZK}, 10, false);
다음과 같이
SpanQuery
을 조합하면 어떻게 수행 할 수 있습니까? 그러면 어떻게 solan에 SpanQuery를 전달하겠습니까? – Philippe