如何在Lucene Index中搜索String字段中的单词

时间:2013-05-13 07:00:27

标签: lucene indexing

如何从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());

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

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

e.g。标题:移动

StringField不会应用任何分析,因此您的文字将按原样编入索引。如果您将StringField更改为TextField,则StringAnalyzer会对其进行分析,并在索引中转换为小写。

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