2013-10-09 5 views
4

라이브러리를 통해 Apache Solr 검색을 구현하려고합니다. 지금까지 내 시스템에서 Solr 인스턴스를 실행하고 특정 필드를 기반으로 몇 가지 쿼리를 작성했습니다. 내 코드는해야 할 일이Apache Solr의 기본 검색 필드 설정

var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>(); 
    var results = solr.Query(new SolrQueryByField("id", "SP2514N")); 

이것은 지금 잘 작동하지만 내가 검색 키워드를 입력 할 때 SOLR가에 볼 수 있도록, 필드를 지정 밖으로 쿼리를하고 싶습니다 것 같습니다 그리고 result.I를 돌려 사용할 수있는 모든 필드는 here

 var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>(); 
     var results = solr.Query(new SolrQuery("SP2514N")); 

에서 SolrNet 라이브러리를 만들 수있는 코드를 발견하지만 아래로 드릴 다운하면이, 일한 적이, 내가 기본 검색 필드를 설정해야합니다 발견 Solr 인스턴스에서 Solr이 아무것도 선택하지 않으면 해당 필드를 검색합니다 (이것은 내가 그것을 어떻게 이해했는지입니다. 이것에 대해 확실하지 않음). 그래서 내가, SOLR의 기본 필드를 설정 갔다 내가 Solrconfig.XML했다이

<requestHandler name="/query" class="solr.SearchHandler" default="true"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <str name="wt">json</str> 
     <str name="indent">true</str> 
     <str name="df">text</str> 
     <str name="df">id</str> 
    </lst> 
    </requestHandler> 

처럼 편집 나누었다이 너무 도움이되지 않습니다 [바로 <str name="df">id</str>이 필드를 같은 별도의 추가] 그리고 난 붙어 아무도 말해 줄 수 솔라에서 기본 검색 필드를 올바르게 설정할 수 있습니까? 아니면 내가 잘못한 일을하고 있습니까? I have Uploaded My Solrconfig file here

+0

다른 질문에 대한 답변보기 http://stackoverflow.com/questions/8294337/how-can-i-search-all-field-in-solr-that-contain-the-keywords – kellyfj

답변

4

나는 SolrNet 라이브러리에 대해 알고하지 않습니다,하지만 당신의 schema.xml 즉 <defaultSearchField>FieldName</defaultSearchField>에 DefaultSearchField를 정의 할 필요가 검색의 기본 필드를 만들 수 있습니다.

당신은 <SOLR_HOME>\apache-solr-3.6.0\example\example-DIH\solr\testsyndrome\conf\schema.xml

@이 파일을 찾을 수 있습니다

나는 당신이 찾고있는 무엇 바랍니다.

+3

기본 검색 필드 는 명시 적 필드 이름이 사용되지 않은 쿼리에서 검색해야하는 필드 이름을 식별하기 위해 쿼리를 구문 분석 할 때 Solr에서 사용됩니다. 이 설정을 사용하거나 의존하지 않는 것이 좋습니다. 대신 검색을위한 요청 처리기 또는 쿼리 LocalParams는 검색 할 기본 필드를 지정해야합니다. 이 설정은 생략 할 수 있으며 더 이상 사용되지 않는 것으로 간주됩니다. –

+0

이 솔루션은 Solr 3.6 이상부터는 더 이상 적용되지 않습니다. https : //issues.apache를 참조하십시오.org/jira/browse/SOLR-2724 – kellyfj

+0

@OkkeKlein 그런 다음 Solr 5에서 사용할 항목. Solr에서 검색 할 수없는 일부 MySQL 열을 저장하고 싶지는 않습니다. ed - 컬럼'add_time' – Ankit

4

SolrNet에서 시작하지 마십시오. Solr의 기본 웹 관리 인터페이스를 사용하십시오. 요청 핸들러와 매개 변수를 이해할 때까지 거기에서 반복하십시오. 그런 다음 SolrNet으로 돌아갑니다.

귀하의 경우 기본 요청 처리기가 변경되어 df 매개 변수를 두 번 사용하려고 한 것 같습니다. 나는 단지 여분의 문제를 피하기 위해 원래의 요청 처리기를 고수 할 것이다.

df 매개 변수를 사용하면 단일 필드 또는 여러 필드를 검색하려고합니까? 단일 필드 인 경우 매개 변수의 값을 하나만 유지하십시오. 여러 개가있는 경우 필드 집합을 제공 할 수있는 eDisMax로 전환해야합니다.

관리자 인터페이스를 사용하여 실험 해 볼 수 있으며 핸들러의 기본 매개 변수에 추가 할 수 있습니다.