2011-03-02 4 views
13

이 질문은 solr 설치에서 자주 발생하지 않고 격리 된 읽기 시간 초과에 대한 후속 작업입니다. this questionSolr에서 좋은 자동 워킹 쿼리는 무엇이며 어떻게 작동합니까?

가능한 문제로 새로운 검색 자에 대한 누락/잘못된 자동 경고 쿼리가 발견되었습니다.

이제 autowarming 쿼리가 "좋아 보여야"하는 방법에 대해 혼란스러워합니다.

내가 읽었지만 이에 대한 좋은 문서를 찾을 수 없습니다.

색인에 많은 문서가 삽입되어야합니까? 또는 색인에있는 모든 고유 필드에 일치 항목이 있어야합니까?

그냥 *:*이 최고의 자동 워킹 쿼리일까요? 그렇지 않은 이유는 무엇입니까?

<lst><str name="q">george</str> <str name="start">0</str> <str name="rows">10</str></lst> 

이유 :

<lst><str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str></lst> 
<lst><str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str></lst> 

내가 그들을 변경 :

예제 SOLR의 설정은 그것에 theese 샘플 쿼리를 가지고? 이 색인에는 영화 주체가 제목과 배우 필드가 들어 있기 때문입니다. 그것들은 가장 많이 검색된 것들입니다. 그리고 조지는 제목과 배우에 등장합니다.

나는 이것이 의미가 있는지 실제로 알지 못합니다. 그래서 내 질문은 다음과 같습니다.

  • 내 인덱스에 대한 좋은 자동 워킹 쿼리는 무엇이며 그 이유는 무엇입니까?
  • 좋은 자동 경고 쿼리를 만드는 이유는 무엇입니까?

이것은 색인의 예제 문서입니다. 지수는 약 70,000 문서를 가지고 있으며, 그들은 모두이 (물론의 다른 값)과 같이 : 예를 들어 문서 :

<doc> 
    <arr name="actor"><str>Tommy Lee Jones</str><str>Will Smith</str><str>Rip Torn</str> 
    <str>Lara Flynn Boyle</str><str>Johnny Knoxville</str><str>Rosario Dawson</str><str>Tony Shalhoub</str> 
    <str>Patrick Warburton</str><str>Jack Kehler</str><str>David Cross</str><str>Colombe Jacobsen-Derstine</str> 
    <str>Peter Spellos</str><str>Michael Rivkin</str><str>Michael Bailey Smith</str><str>Lenny Venito</str> 
    <str>Howard Spiegel</str><str>Alpheus Merchant</str><str>Jay Johnston</str><str>Joel McKinnon Miller</str> 
    <str>Derek Cecil</str></arr> 
    <arr name="affiliate"><str>amazon</str></arr> 
    <arr name="aka_title"><str>Men in Black II</str><str>MIB 2</str><str>MIIB</str> 
    <str>Men in Black 2</str><str>Men in black II (Hombres de negro II)</str><str>Hombres de negro II</str><str>Hommes en noir II</str></arr> 
    <bool name="blockbuster">false</bool> 
    <arr name="country"><str>US</str></arr> 
    <str name="description">Agent J (Will Smith) muss die Erde wieder vor einigem Abschaum bewahren, denn in Gestalt des verführerischen Dessous-Models Serleena (Lara Flynn Boyle) will ein Alien den Planeten unterjochen. Dabei benötigt J die Hilfe seines alten Partners Agent K (Tommy Lee Jones). Der wurde aber bei seiner "Entlassung" geblitzdingst, und so muß J seine Erinnerung erst mal etwas auffrischen bevor es auf die Jagd gehen kann.</str> 
    <arr name="director"><str>Barry Sonnenfeld</str></arr> 
    <int name="film_id">120912</int> 
    <arr name="genre"><str>Action</str><str>Komödie</str><str>Science Fiction</str></arr> 
    <str name="id">120912</str> 
    <str name="image_url">/media/search/filmcovers/105x/kf/false/F6Q1XW.jpg</str> 
    <int name="imdb_id">120912</int> 
    <date name="last_modified">2011-03-01T18:51:35.903Z</date> 
    <str name="locale_title">Men in Black II</str> 
    <int name="malus">3238</int> 
    <int name="parent_id">0</int> 
    <arr name="product_dvd"><str>amazon</str></arr> 
    <arr name="product_type"><str>dvd</str></arr> 
    <int name="rating">49</int> 
    <str name="sort_title">meninblack</str> 
    <int name="type">1</int> 
    <str name="url">/film/Men-in-Black-II-Barry-Sonnenfeld-Tommy-Lee-Jones-F6Q1XW/</str> 
    <int name="year">2002</int> 
</doc> 

대부분의 쿼리가 장소에 어떤 필터 배우 필드에 정확히 일치하는 쿼리됩니다.

예 :

INFO = /은/ 있는 params = {패싯 = TRUE & 정렬 = 점수 + ASC, + 아 + ASC, + 년 + DESC & HL을 선택 [] 웹 애플리케이션 =/SOLR 경로 .simple.pre = starthl & HL = 사실 & 버전 = 2.2 & FL = *, 점수 & facet.query = 년도 : [1900 + TO + 1950] & facet.query = 년도 : [+ TO + 1980 1951] & facet.query = 연도 : [1981 + TO + 1990] & facet.query = 연도 : [1991 + TO + 2000]facet.query = 03,210 년 : 2001 + 2011 + TO] = & 포밍 된 DIV (부 (10000, 아), 100)^10 = & hl.simple.post endhl facet.field = & & 장르 facet.field = country & facet.field = 블록 버스터 & facet.field = affiliate & facet.field = product_type & qs = 5 & qt = dismax & hl.fragsize = 200 = 2 mm & & & facet.mincount = 1 QF = 액터^0.1 f.blockbuster.facet.mincount & & f.genre.facet.limit = 0 = 20 = & hl.fl 배우 중량 = & & JSON f.affiliate.facet.mincount = 1 f.country.facet.limit & & 행 = 20 10 = & PF = 액터^5 & & 시작 = 0 Q = "+ Josi Kleinpeter"& PS = 3} = 1 히트 상태 = 0 QTime = 4

답변

15

온난화에는 2 가지 유형이 있습니다. 쿼리 캐시 온난화 및 문서 캐시 온난화 (필터도 있지만 쿼리와 비슷합니다). 쿼리 캐시 가중치 설정은 인덱스가 다시로드되기 전에 X 개의 최근 쿼리를 다시 실행하는 설정을 통해 수행 할 수 있습니다. 문서 캐시 가온은 다릅니다.

문서 캐시 가뭄의 목표는 자주 액세스하는 문서를 문서 캐시에 대량으로 가져 와서 디스크에서 읽을 필요가 없도록하는 것입니다. 따라서 귀하의 질문은 이에 초점을 맞추어야합니다. 가장 자주 검색 한 문서가 무엇인지 알아 내려고로드해야합니다. 최소 수의 쿼리를 사용하는 것이 바람직합니다. 이것은 필드의 실제 내용과 아무 관련이 없습니다. 편집 : 명확하게. 문서 캐시를 따뜻하게하면 쿼리 결과에 관계없이 검색 결과에서 가장 자주 볼 수있는 문서가 가장 많이 사용됩니다. 국가 별

  • 로드, 사용자의 검색의 대부분은 미국 영화의 경우 :

    개인적으로, 내가 좋아하는 것들에 대한 검색을 실행하는 것입니다.

  • 대부분의 검색어가 최신 영화 인 경우로드 중입니다.
  • 검색 량이 많은 장르가 짧은 경우 장르별로로드하십시오.

마지막으로 모두로드하는 것이 좋습니다. 문서가 작아 보입니다. 70,000 대는 요즘 서버 메모리면에서 아무 것도 아닙니다. 문서 캐시가 충분히 크고 사용 가능한 메모리가 충분한 경우 이동하십시오. 참고로, 가장 큰 이점은 문서 캐시 때문일 것입니다. 쿼리 캐시는 반복 쿼리에 대해서만 유용하며, 이는 실망스럽게도 낮을 수 있습니다. 거의 항상 대형 문서 캐시의 이점을 누릴 수 있습니다.

+0

OP가 필드 및/또는 필터 캐시를 사용 중일 수 있습니다. 또한 워밍업하는 것이 좋습니다. 예를 들어 열거 형 패싯이있는 경우 해당 필터와 일치하는 문서 비트 맵을 캐싱하므로 모든 필터를 따뜻하게하려고합니다. 이 경우 검색어뿐만 아니라 검색어도 중요합니다. – Xodarap

+0

@ Xodarap - 필자는 필터 캐시가 암시 적으로 데워 질 수 있다고 생각합니다. 인덱스가 다시로드되기 전에 가장 최근에 실행 된 쿼리의 하위 집합으로 실행됩니다. 이것은 핫 스왑에 있습니다. 콜드 스타트에서는 쿼리가 중요합니다. – rfeak

관련 문제