java - 为什么 Lucene 结果只包含完全匹配?

标签 java lucene

<分区>

我已经在 Lucene 中创建了文档索引。其中一个字段名为 title,我想搜索 title 包含 word 的所有文档。不幸的是,我只得到了准确的结果 - 我得到了标题为 word 的文档(但不是例如 my word)。

代码:

    String field = "title";
    String value = "word"; 
    List<MyDoc> myDocList = new ArrayList<MyDoc>();
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_45);
    QueryParser parser = new QueryParser(Version.LUCENE_45, field, analyzer);

         try {

             Query query = new TermQuery(new Term(field, value));
            int numResults = 100;
            ScoreDoc[] hits =   indexSearcher.search(query,numResults).scoreDocs;
            for (int i = 0; i < hits.length; i++) {
                 Document doc = indexSearcher.doc(hits[i].doc);
                 myDocList .add(getMyDoc(doc));
            }

         } catch (IOException e) {
             e.printStackTrace(); 
         }

         return myDocList ;

最佳答案

检查索引是如何创建的。听起来您可能使用了 StringField 而不是 TextField。我认为 StringField 不会标记其内容,而是将其视为一个大关键字。

关于java - 为什么 Lucene 结果只包含完全匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19744787/

相关文章:

java - 'setExact' 和 'setAlarmClock' 之间的区别

Java Swing : Alt-tab styled menu (context switching menu)

java - Shedlock 仅选择某些服务器

solr - 如何在 lucene 中增强更长的文档

elasticsearch - Elasticsearch中的软must_not

tomcat - 如何在 webapp 部署时创建 Lucene 内存索引

java - 打印并计算二维数组java中的最大值

Java:无法在比较器中将对象转换为日期

lucene - java.lang.ClassCastException : . .. Lucene40PostingsFormat 错误

java - Apache lucene : Sorting numbers and german umlauts