2011-06-14 9 views
1

방금 ​​SolrNet을 탐구하기 시작했습니다. 이전에는 MSSQL FULL TEXT를 사용했습니다.SolrNet 초보자 - 여러 Where 절을 처리하는 방법

SQL Server에서 내 쿼리는 전체 텍스트 검색을 수행하며 여러 조인 및 Where 절도 사용합니다. 또한 사용자 지정 페이징을 사용하여 수백만 개 중에서 10 개 행만 반환합니다.

블로그에서 제공되는 몇 가지 solrNet 문서를 읽고 샘플 앱을 실행했습니다. 지금까지 모두 잘 작동했습니다. 아이디어를 얻고 싶습니다. JOINS 및 WHERE 절을 어떻게 사용합니까 ??

사용자가 Samsung을 검색하면 100KB의 레코드가 반환되지만, 사용자가 삼성 & & 도시 = 'New York'& & 가격> '500'을 검색하면 수천 개의 레코드 만 얻을 수 있습니다.

  • Solr에 모든 열을 추가하고 Solr에 WHERE 절을 써야합니까?
  • SQL JOINS에 대해 어떻게해야합니까?

미리 감사드립니다.

답변

1

Solr에는 조인이 없습니다. Solr wiki :

Solr은 하나의 테이블을 제공합니다. 집합에 데이터베이스 테이블을 인덱스에 저장하면 테이블에는 테이블 중 일부를 비정규 화해야합니다. 비정규 화를 피하기위한 시도는 대개 실패합니다. 절 (즉, 필터링) Querying in SolrNet, Solr query syntaxCommon Solr query parameters 참조 WHERE 정보

.

+0

팁 주셔서 감사 Mauricio. –

+0

SolrNet에 대한 경험으로 저를 안내 할 수 있다면 몇 가지 질문 만 있습니다. 1) 쿼리에 거의 5 개의 필터가 있으면 Solr에서 전체 텍스트 검색 속도를 얼마나 느리게 할 수 있습니다. 둘째, 위도와 경도에 가장 가까운 위치 ID를 공식화 한 내 MS SQL 데이터베이스에서 근접 검색을 구현했습니다. 와트는 솔라와 함께 할 수있는 가장 좋은 방법입니다. 즉, Solr에게 질의를 보내기 전에 가장 가까운 위치 이름을 공식화해야 하는가? 그런 다음 Solr에서 SQL IN 연산자와 동일한 것을 사용하여 모든 위치 이름을 일치시킵니다. –

+0

@Peter : 1. 필터가 무엇인지에 따라 다르지만 일반적인 필터는 눈에 띄지 않습니다. 2. http://wiki.apache.org/solr/SpatialSearch를 참조하십시오 –

1

Where 절과 동일한 Solr은 열을 필드에 매핑하고 쿼리 구문을 기반으로 쿼리를 실행하는 것입니다. 귀하의 예제와 같은 쿼리

Samsung && City='New york' && Price >'500' 

는 SOLR이 같은로 번역 될 수있다 :

q=Samsung AND city:"new york" AND price:[500 TO *] 

당신은 당신이 SOLR 스키마에 데이터베이스를 매핑 할 때 몇 가지주의를 취할 필요가, 특히 당신이 아마 것 데이터를 비정규 화해야합니다. 자세한 내용은 this page on the Solr wiki을 참조하십시오. 기본적으로 Solr에서는 복잡한 JOIN을 수행 할 수 없습니다. 그것은 "평평한"색인입니다.

+0

감사합니다. 그것은 도왔다! –

관련 문제