【问题标题】:Why Lucene result contains only exact matches? [duplicate]为什么 Lucene 结果只包含完全匹配? [复制]
【发布时间】:2013-11-02 17:35:03
【问题描述】:

我在 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 ;

【问题讨论】:

    标签: java lucene


    【解决方案1】:

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

    【讨论】:

    • 是的,我使用了 StringField。不知道这可能是个问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多