2011-07-29 7 views
3

저는 Solr을 사용하는 것에 대해 아주 새로운 것이지만 도움을 요청하고 싶습니다. 쿼리 결과를 강조 표시 할 수있는 응용 프로그램을 개발 중입니다. 이를 위해 내가 정규식 fragmenter을 사용하고 있습니다 :형태소 분석으로 인해 Solr에서 느리게 강조 표시하지 마십시오.

<highlighting> 
<fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter"> 
<lst name="defaults"> 
    <int name="hl.fragsize">500</int> 
    <float name="hl.regex.slop">0.5</float> 
    <str name="hl.pre"><![CDATA[<b>]]></str> 
    <str name="hl.post"><![CDATA[</b>]]></str> 
    <str name="hl.useFastVectorHighlighter">true</str> 
    <str name="hl.regex.pattern">[-\w ,/\n\"']{20,300}[.?!]</str> 
    <str name="hl.fl">dokumentum_syn_query</str> 
</lst> 

필드는 용어 벡터와 오프셋 (offset) 색인 : 강조 표시가 잘 작동

<field name="dokumentum_syn_query" type="huntext_syn" indexed="true" stored="true" multiValued="true" termVectors="on" termPositions="on" termOffsets="on"/> 
<fieldType name="huntext_syn" class="solr.TextField" stored="true" indexed="true" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="com.morphologic.solr.huntoken.HunTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_query.txt" enablePositionIncrements="true" /> 
     <filter class="com.morphologic.solr.hunstem.HumorStemFilterFactory" 
     lex="/home/oroszgy/workspace/morpho/solrplugins/data/lex" 
     cache="alma"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_query.txt" enablePositionIncrements="true" /> 
     <filter class="com.morphologic.solr.hunstem.HumorStemFilterFactory" 
     lex="/home/oroszgy/workspace/morpho/solrplugins/data/lex" 
     cache="alma"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms_query.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
</fieldType> 

를, 그 정말 느린 것을 excepts. 형광펜/조각 모음이 모든 결과 문서의 형태소 분석을 다시하기 때문에 이것이 실현되었습니다.

왜 이런 일이 일어나지 않으면 어떻게 도와야합니까? (나는 fastvectorhighlighter를 사용하는 것이 내 문제를 해결할 것이라고 생각했지만 그렇지 않았다.)

답변

1

문제는 "true"대신 "on"값을 사용하려고했습니다. 따라서 스키마의 적절한 줄은 다음과 같습니다.

<field name="dokumentum_syn_query" type="huntext_syn" indexed="true" stored="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/> 
0

"느린"solr 결과를 강조 표시하지 않으려면 solr 강조 표시를 사용하지 않기로 결정했습니다. 클라이언트 쪽에서 강조 표시 기능을 코딩했습니다. 클라이언트 측에서 토큰 화되고 줄기가 붙은 용어를 찾으려면 서버 측에서 solr이 수행하는 것과 같은 방법으로 클라이언트 측에서 검색 문구를 처리해야하기 때문에 저 작업은 저에게는 맞지만 조금 까다 롭습니다. , 어떤 solr에 대한 검색 및 발견했다. 즉, 클라이언트 측에서 형태소 분석 기능을 구현해야합니다.

대안 :

내 생각, 결과 집합의 용어 벡터는 당신에게 당신이 클라이언트 측에서 강조해야하는 용어의 위치에 대한 정보를 제공합니다. 이 정보를 사용하여 클라이언트에서 줄기를 구현하지 않고 클라이언트 측의 용어를 강조 표시 할 수 있습니다. 그러나 나는 생각한다 : 마침내 이것은 정말로 대안이 아니다. Solr은 여전히 ​​단어의 위치를 ​​계산해야하기 때문에 서버 측에서 시간을 절약 할 수는 없습니다.

+0

답변 해 주셔서 감사합니다! 이전에 tervVector에 관한 내용을 읽었습니다. 위에서 볼 수 있듯이 이것을 사용하려고했습니다. Unfortunatelly 아마도 오래된 문서를 사용하고 사실 대신 값을 설정했습니다. 이 트릭을 무시하는 데 도움이되는 트릭이었습니다. – oroszgy

관련 문제