【问题标题】:Lucene.Net PrefixQueryLucene.Net 前缀查询
【发布时间】:2010-04-23 18:47:29
【问题描述】:

我正在为我的网站搜索服务开发一个建议框。我必须搜索这样的字段:

Visual Basic 企业版
视觉 C++
视觉 J++

我的代码是:

  Directory dir = Lucene.Net.Store.FSDirectory.GetDirectory("Index", false);

  IndexSearcher searcher = new Lucene.Net.Search.IndexSearcher( dir,true);    

  Term term = new Term("nombreAnalizado", _que);

  PrefixQuery query = new PrefixQuery(term);

  TopDocs topDocs = searcher.Search(query, 10000);

这段代码在这种情况下运行良好:

“企业版”将匹配“Visual Basic 企业版”

但是“企业 E”不匹配任何内容。

我在索引时和用户搜索时删除了空格。

谢谢。

【问题讨论】:

    标签: lucene lucene.net


    【解决方案1】:

    我认为您应该使用 QueryParser 并让它构建适当的 Query 对象,而不是使用 PrefixQuery 之类的特定对象。

    在 Java 中:

    QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "nombreAnalizado", new StandardAnalyzer(Version.LUCENE_CURRENT));
    Query query = parser.parse(_que);
    

    确保您使用的分析器与您用于索引的分析器相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-11
      • 2015-03-10
      • 2018-09-30
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多