기본적으로 Solr은 검색 매개 변수에 대해 다중 값 필드의 각 레코드를 검색하려고합니다. 내 예제에서 읽으십시오 :Solr, 다중 값 필드에서 고유 한 값 집합에 대한 하나의 필드에 대해 쿼리하는 방법
Solr을 사용하여 데이터를 색인화합니다. 주어진 제품과 일치하는 병렬 배열 (다중 값 필드 형식)의 응용 프로그램 데이터가 있습니다. 내 선택 범위를 좁힐 필터 쿼리 (& FQ의 =)를 사용하고
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
<-solr record end->
: 제조업체, 모델 및 연도가 필드를 여러 값을 다음 예를 참조하십시오. 문제는 누군가 2000 년 Acura Integra를 찾으면 위의 기록과 일치하지만 제조업체, 모델 및 연도 데이터가 병렬로 인코딩되기 때문에 실제로이 제품에는 2000 년 Acura Integra가 없습니다. Solr은 make 필드의 make, 모델 필드의 모델, year 필드의 해를 (필연적으로) 일치시키고이 결과를 반환하고, 내 병렬 처리를 존중하지 않습니다. 내 쿼리 지금까지 같을 것이다 :
fq=make:"acura"&fq=model:"integra"&fq=year:2000 (I would normally escape URL characters when I POST to Solr, this is just an example)
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
summary: "acura" "integra" "1997" "3.4", "acura" "rsx" "2004" "4.5", "acura" "rsx" "2000", "4.5"
<-solr record end->
나는 다음 내 쿼리에 추가
summary:(""acura" AND "integra" AND "2000")
내가 기대, 나는 나의 질문에, 그이를 추가 한 경우 요약 필드에 acura integra 2000이 없으므로 기록이 더 이상 나타나지 않습니다. 그러나 이것은 작동하지 않습니다. 기록은 여전히 나옵니다. 나는 곤두박질 친다. 누구든지이 문제에 대한 해결책을 가지고 있습니까? 며칠 동안 나를 죽였어.
기본적으로 Solr은 내 검색 매개 변수에 대해 다중 값 필드의 각 레코드를 검색하려고합니다. 가능한가요? 내가하려는 일을하는 더 좋은 방법이 있습니까?
감사합니다.
안녕하세요. 이것은 정확하게 원래의 솔루션이었고 완벽하게 작동합니다! 유일한 문제는 내 사이트의 제품 화면으로 이동하면 제품 수 대신 응용 프로그램 수가 표시된다는 것입니다. 동일한 제조업체, 모델 및 연도가 SKU에 속하고 엔진이나 하위 모델 만 다른 경우 해당 제품 아래의 "맞는"섹션에 설명되어 있습니다. 예를 들어, 4 개의 응용 프로그램을 내 사이트의 1 제품 "상자"에 함께 표시 할 수 있습니다. 검색 결과에 1의 1이 표시되어야합니다. 대신 4 개의 4 중보기가 표시됩니다 (화면에 하나의 상자가 있음에도 불구하고). 따라서 새로운 스키마 ... – Dan
@ Dan : 필드 접기를 살펴보십시오. http://wiki.apache.org/solr/FieldCollapsing –
SKU (12345)는 여러 차량에 적합하기 때문에 문제가됩니다. 각 SKU + 차량 1 대는 자체 기록으로 좋지만 고객으로 보는 것은 끔찍합니다. 각 차량 (및 응용 프로그램)을 롤업하고 해당 차량에 맞는 SKU에 연결하면 더 쉽게 볼 수 있습니다. Howver, 페이지 당 10 개의 응용 프로그램을 볼 수도 있지만 사용자가 무언가를 살 수있는 상자가 3 개 밖에 없습니다. 그래서 그것은 항목 1에서 10까지를 보지 만 그림과 함께 3 개의 "상자"와 "구매 버튼 클릭"이 나열되어 있습니다. – Dan