2012-12-11 2 views
1

에 동의어 및 맞춤법 실수 기능을 추가하는 방법을 나는내가 SOLR에서 스키마를 작성해야합니까, 루를 사용 SOLR

<bean class="org.apache.solr.client.solrj.impl.CommonsHttpSolrServer" id="solrServer"> 
    <constructor-arg value="${solr.serverUrl}"/> 
</bean> 

구성 파일이

solr.serverUrl=http\://localhost\:8983/solr 
을 가지고 봄 콩 다음 생성 한 로 사용되는

은 다음과 같습니다

@Autowired 
transient SolrServer Address.solrServer; 

@Async 
public static void Address.indexAddresses(Collection<Address> addresses) { 
    List<SolrInputDocument> documents = new ArrayList<SolrInputDocument>(); 
    for (Address address : addresses) { 
     SolrInputDocument sid = new SolrInputDocument(); 
     sid.addField("id", "address_" + address.getId()); 
     sid.addField("address.id_i", address.getId()); 
     // Add summary field to allow searching documents for objects of this type 
     sid.addField("address_solrsummary_t", new StringBuilder().append(address.getId())); 
     documents.add(sid); 
    } 
    try { 
     SolrServer solrServer = solrServer(); 
     solrServer.add(documents); 
     solrServer.commit(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

내 질문은 :

solr에서 색인을 생성하려면이 스키마를 작성해야합니까? 아니면이 코드로 충분합니까?

이 외에도 내 응용 프로그램은 다중 계층 아키텍처이며 웹 사이트는 작은 부분입니다. 그래서 어떻게 내가 삭제할 수있는 데이터를 삭제할 수 있습니다 말 Windows 응용 프로그램 또는 안드로이드 응용 프로그램.

하나의 솔루션은 인덱스를 다시 만들 수 있지만 검색 결과를보다 효과적으로 만드는 데 사용되는 solr에서 통계를 잃지는 않습니다 (확실하지 않습니다)?

solr에 동의어 검색을 어떻게 추가하고 맞춤법 실수 추가 기능을 초기화 할 수 있습니까 (단어는 기본적으로 사전이 아닌 사람 또는 장소 이름 일 수 있습니다)?

여러 질문을 병합하는 것에 대해 사과합니다. 귀하의 도움에 미리 감사드립니다.

답변

2

solr 또는 에서 색인을 생성하기 위해 solr에서 스키마를 만들어야합니까?이 코드는 충분합니다.

예 schema.xml 파일이 있어야하며 색인 생성을 위해 필드를 정의해야합니다.

내 응용 프로그램은 다중 계층 아키텍처이고 웹 사이트는 작은 부분입니다. 그럼 어떻게하면 에 의해 삭제 된 데이터를 삭제할 수있는 Windows 응용 프로그램 또는 안드로이드 응용 프로그램을 말할 수 있습니다.

다음 코드 단편을 사용하여 문서를 삭제할 수 있습니다. 거기에 12345 값을 가진 필드 ID가 있다고 가정하십시오. <query> 태그 사이에 쿼리를 작성할 수 있습니다. (나는 확실하지 오전하는) 효과 검색 결과 더 만드는 데 사용됩니다 SOLR에서 통계의 손실

http://localhost:8983/solr/update?stream.body=<delete><query>id:12345</query></delete>&commit=true 

하나의 해결책은 인덱스를 다시 만들 수 있지만 발생하지 않을까요?

AFAIK, 검색 통계는 기본적으로 저장되지 않으므로 색인을 다시 만드는 것이 해결책이 될 수 있습니다.

어떻게 SOLR의 동의어 검색을 추가 할 수 있고 어떻게 부가 기능 (단어가 사람의 이름이나 사전에서하지 기본적으로 을 배치 할 수 있습니다) 맞춤법 실수를 초기화 할 수 있을까?

schema.xml 파일의 필드 정의에 SynonymFilterFactory를 추가 할 수 있습니다.

+0

도움 주셔서 감사합니다. 스키마를 만들고 데이터를 인덱싱했습니다. SynonymFilterFactory를 구현하고 인덱스의 내 필드 중 하나에서 맞춤법 검사를 수행하기위한 좋은 자습서를 공유 할 수 있습니까? –

+0

구현할 필요가 없습니다. 이미 구현되었습니다. schema.xml 파일의 필드 정의에서 구성해야합니다. 여기에서 예제를 찾을 수 있습니다. http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory –

+0

Thanks !! 그러나 그것은 그것이 단어를 대체 할 것이라고 말한다. 대체 된 단어를 사용자가 검색하면 어떻게됩니까? 검색 쿼리는 어떻게 구현합니까? 아니면 자체적으로 수행합니까? –

관련 문제