Java 如何从Lucene字段中获取不同的值

Java 如何从Lucene字段中获取不同的值,java,search,lucene,Java,Search,Lucene,我正在尝试从Lucene索引进行搜索。我已经使用StandardAnalyzer创建了一个索引 我有如下需要索引的数据 课程 BCA 马华 BCA BCA 马华 当我搜索course=“BCA”时,它返回我3次BCA,但我希望它只给出一次不同的值 我正在使用以下代码 try { File indexDir = new File("D:\\indexdirectory\\"); Directory directory = FSDirectory.ope

我正在尝试从Lucene索引进行搜索。我已经使用StandardAnalyzer创建了一个索引 我有如下需要索引的数据

课程 BCA 马华 BCA BCA 马华

当我搜索course=“BCA”时,它返回我3次BCA,但我希望它只给出一次不同的值

我正在使用以下代码

     try {
         File indexDir = new File("D:\\indexdirectory\\");
         Directory directory = FSDirectory.open(indexDir);
         IndexSearcher searcher = new IndexSearcher(directory, true);
         QueryParser parser1;
         parser1= new QueryParser(Version.LUCENE_36, "course", new StandardAnalyzer(Version.LUCENE_36));
         Query query = parser1.parse("BCA");
         int maxhits = 5000;
         TopDocs topDocs = searcher.search(query, maxhits);
         ScoreDoc[] hits = topDocs.scoreDocs;
         int len = hits.length;
         int docId;
         Document d;
             for(int j=0;j<len;j++) {
                 docId = hits[j].doc;
                 d = searcher.doc(docId);                
                 String c = d.get("course"); 
                 System.out.println("Course = "+c);
             } 

     }catch(Exception e) {
         System.out.println("Exception occured"+e);
     }
试试看{
File indexDir=新文件(“D:\\indexdirectory\\”;
Directory=FSDirectory.open(indexDir);
IndexSearcher=newindexSearcher(目录,true);
QueryParser解析器1;
parser1=新的QueryParser(Version.LUCENE_36,“课程”,新的StandardAnalyzer(Version.LUCENE_36));
Query Query=parser1.parse(“BCA”);
int最大点击数=5000;
TopDocs TopDocs=searcher.search(查询,最大点击次数);
ScoreDoc[]点击次数=topDocs.scoreDocs;
int len=hits.length;
int-docId;
文件d;

对于(int j=0;jt要澄清,您是说您的文档中有一个字段的内容:“
BCA MCA BCA BCA MCA
”,当搜索时,它会返回同一文档三次?是的,它会返回三次,但我只想返回一次。您需要的行为是标准行为。您可能正在使用某种非标准的
索引搜索器,或者类似的东西,或者您很可能对索引的内容有错误。我想请确认您正在搜索的索引中存在三个相同的文档,这些文档可能是通过连续运行未覆盖现有索引的索引生成过程放置在那里的。您是否尝试使用查看索引的内容?