【问题标题】:how to search word from String field in Lucene Index如何从 Lucene 索引中的字符串字段中搜索单词
【发布时间】:2013-05-13 07:00:26
【问题描述】:

如何从 Lucene 索引字符串字段中搜索单词?

我有字段 TITLE 的 lucene 索引,包含文档标题

例如:电视不工作,手机不工作

我想从标题中搜索特定的单词。

下面的代码给出了完整内容的结果,如果我将 FULL_CONTENET 更改为 TITLE,那么我不会得到任何结果。

Query qry = null;
qry = new QueryParser(FULL_CONTENT, new SimpleAnalyzer()).parse("not");
Searcher searcher = null;
searcher = new IndexSearcher(indexDirectory);
Hits hits = null;
hits = searcher.search(qry);
System.out.println(hits.length());

【问题讨论】:

  • 你是如何索引你的文档的?

标签: lucene indexing


【解决方案1】:

由于“NOT”是 Lucene 查询语法运算符,这可能是您的问题。

【讨论】:

    【解决方案2】:

    问题是StringAnalyzer 应用了小写过滤器。您的查询将使用小写:

    例如标题:手机。

    StringField 不应用任何分析,因此您的文本将按原样编入索引。如果您将StringField 更改为TextField,它将被StringAnalyzer 分析并在索引中转换为小写。

    如果您将StringAnalyzer 替换为WhitespaceAnalyzer,则没有小写过滤器,它将再次起作用(因为您的查询不会转换为小写)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 2014-02-16
      • 1970-01-01
      • 2011-12-27
      相关资源
      最近更新 更多