2011-04-13 3 views
0

텍스트 메시지를 저장하는 색인 ​​(Lucene 2.9 사용)을 만들었습니다. (문서에는 인덱싱되지 않고 방금 저장되어있는 다른 메타 데이터도 포함되어 있습니다.) 이러한 메시지를 구문 분석하기 위해 StandardAnalyzer를 사용합니다. Solr (예제 색인을 내 색인으로 바꿨습니다)을 사용하여이 색인에 대한 몇 가지 테스트를 실행하려고 시도하면서 다양한 쿼리에서 어떤 결과가 나오는지 확인하려고합니다. lucene 지수에 대한 Soler queryparser?

나는, 다음 쿼리를했을 때 나는 그러나, "text:happiness*"에 그 변경으로 나에게 어떤 결과를 제공합니다 0 결과
"text:happiness" 

을 얻었다. 그들 모두는 "happiness,", "happiness."과 같은 용어를 포함하고 있습니다. 그래서 나는 Luke (lucene 색인 디버깅 도구)를 사용하여 동일한 쿼리 인 (text:happiness)을 실행할 때 색인 작성 중에 토큰 화 문제라고 생각했습니다. Solr로부터 행복을 얻으십시오.이 문제는 색인 생성 중에 문제가 아니라 Solr 쿼리를 지정하는 방식으로 발생합니다. 나는 solrconfig.xml을보고 주석이 달린 줄을 주석으로 달고 주석을 제거한 다음 원래 쿼리 외에 "defType = lucene"을 사용하도록 내 쿼리를 수정했지만 동일한 결과를 얻었음을 알았습니다.
<queryParser name="lucene" class="org.apache.solr.search.LuceneQParserPlugin"/> 

나는 SOLR 매우 작은 경험을 가지고, 그래서 어떤 도움을 크게 감사합니다 :)

+0

solrconfig.xml을 변경하여이 문제를 해결할 수있었습니다. – fsm

+0

해결책으로 해결책을 게시하고 수락 할 수 있습니다. –

+0

나는 내 솔루션을 게시 했으므로이를 받아들이려면 2 일을 기다려야 할 것입니다. – fsm

답변

0
I가 조회 된 필드합니다 (SOLR의의 schema.xml의 유형 "텍스트"로 정의 하였다

solrconfig하지 .xml 내가 잘못 이전 언급에서 언급). 여기의 schema.xml

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <!-- in this example, we will only use synonyms at query time 
     <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
     --> 
     <!-- Case insensitive stop word removal. 
      add enablePositionIncrements=true in both the index and query 
      analyzers to leave a 'gap' for more accurate phrase queries. 
     --> 

내가 다음으로 교체에서 관련 조각, 나에게 필요한 동작을 제공

<fieldType name = "text" class="solr.TextField"> 
     <analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/> 
    </fieldType> 

입니다.