2013-12-17 2 views
3

나는 자동 완성을 위해 패싯 쿼리를 사용하고 있습니다. 예를 들어거의 실시간 Solr Facet 자동 완성을위한 쿼리

:

http://localhost:8983/solr/collection1/autocomplete_en?facet.prefix=sol&... 

업데이트 핸들러가 softcommits을 수행하도록 구성되어 있습니다 :

<updateHandler class="solr.DirectUpdateHandler2"> 
    <updateLog> 
     <str name="dir">${solr.ulog.dir:}</str> 
    </updateLog> 
    <autoCommit> 
     <maxTime>30000</maxTime> 
     <openSearcher>false</openSearcher> 
    </autoCommit> 
    <autoSoftCommit> 
     <maxTime>1000</maxTime> 
    </autoSoftCommit> 
    </updateHandler> 

그러나 인덱스를 업데이트 한 후 패싯 쿼리가 항상 느린

.

이 문서화 "소프트 커밋이 문서를 볼 수 있도록하지만, 일부 비용 것이다. FieldValueCache가 무효화 ..., 그래서면 쿼리 캐시를 새로 고칠 때까지 기다려야 할 것이다"고 말했다

http://searchhub.org/2013/08/23/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/

참조

FieldValueCache를 다시 계산해야하기 때문에 패싯 쿼리는 소프트 커밋 후에도 항상 느려집니다.

DocValues가있는 패싯은 실시간으로 호환되지만 불행히도 TextField는 지원되지 않습니다. 참조 http://wiki.apache.org/solr/DocValues

쿼리에 필터를 사용해야하므로 suggester 구성 요소를 사용할 수 없습니다.

내 질문 :

  • 은 페이스 팅과 거의 실시간 검색을 사용할 수있는 기회, 아직 있습니까?
  • 탄성 검색에서이 문제가 어떻게 해결됩니까?

답변

1

facet.method을 변경하면 도움이 될 수 있습니다. fc은 전체 텍스트 필드에서 패 시팅하는 데 적합하지 않습니다. 내 경우 enum에서

는 도움 :

http://localhost:8983/solr/collection1/autocomplete_en?facet.prefix=sol&facet.method=enum... 

그러나 더 큰 인덱스

enum 너무 느린 수 있습니다. 또한, 실시간 근처 http://wiki.apache.org/solr/Suggester

문제입니다 : 당신이 쿼리에 필터를 필요로하지 않는 경우

, 당신은 SUGGESTER 구성 요소를 고려해야합니다. 그러나 대부분의 경우 최적화 후 업데이트가 충분할 수 있습니다.