2012-11-02 213 views
0

我第一次使用Lucene索引。我有一些在印地文和英文文件,我创建索引的文件内容。当我搜索索引时,我从所有的文件中得到结果,即使我的查询是英文单词,它也会返回印地文件。我已经添加了下面的代码。请告诉我我在哪里错了。Lucene索引搜索

 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*/ 

      } 

感谢所有

回答

0

首先,我会用Luke来检查我的查询语法是否正确。然后我会检查那个行为不端的英语单词是否是一个印地语单词的同形图(即与拼写一个印地语单词拼写相同的英语单词)。

如果您想阻止搜索英文搜索字词以获得印地文文档,您需要标记每个文档是否为英文或印地文,然后在搜索查询中指定该标记。在查询语法分析,这可能是这样的:

ENGLISHSEARCHTERMS +(language:English) 

(所有印地文文档都有自己的语言字段设置为“印地文”和所有的英文文件都有自己的语言字段设置为“英语”)。