2012-11-02 3 views
0

Lucene 인덱싱을 처음 사용하고 있습니다. 나는 힌디어와 영어로 몇 가지 문서를 가지고 있으며 나는 문서의 내용에 대한 색인을 만든다. 나는 색인을 검색 할 때 힌디어 문서를 반환하는 나의 검색어가 영어 단어 일지라도 모든 문서에서 결과를 얻는다. 내가 아래에 코드를 추가했습니다. 내가 잘못했는지 말해. 모든Lucene 인덱스 검색

답변

0

첫째, 나는 Luke을 사용

 IndexSearcher searcher = new IndexSearcher(directory); 
     QueryParser parser = new QueryParser("Content", analyzer); 



     while (condition) 
     { 
      Search(text, searcher, parser); 

     } 


     searcher.Close(); 
     private static void Search(string text, IndexSearcher searcher, QueryParse parser) 
    { 
     Query query = parser.Parse(text); 

     Hits hits = searcher.Search(query); 
     int results = hits.Length(); 

     for (int i = 0; i < results; i++) 
     { 
      Lucene.Net.Documents.Document doc = hits.Doc(i); 

      string show = doc.ToString(); 

      float score = hits.Score(i); 

      /* insert doc id in database table*/ 

      } 

덕분에 내 쿼리 구문 잘 여부를 확인합니다. 그런 다음 오해가있는 영어 단어가 힌디어 단어에 대한 호모 그램인지를 확인합니다 (즉 힌디어 단어와 동일한 철자법 단어).

영어 검색 용어가 힌디어 문서로 검색되지 않도록하려면 각 문서에 영어 또는 힌디어가 있는지 표시 한 다음 검색 쿼리에 해당 표시를 지정해야합니다.

ENGLISHSEARCHTERMS +(language:English) 

(모든 힌디어 문서를 자신의 언어 필드가 '힌디어'모든 영어 문서에 설정되어 그들의 언어 필드가 '영어'로 설정된) : 같은 쿼리 파서 구문에서는이 볼 수 있었다.