我有字段 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());
答案 0 :(得分:1)
由于“NOT”是Lucene查询语法运算符,这可能是您的问题。
答案 1 :(得分:-1)
问题是StringAnalyzer
应用了小写过滤器。您的查询将为小写:
e.g。标题:移动
StringField
不会应用任何分析,因此您的文字将按原样编入索引。如果您将StringField
更改为TextField
,则StringAnalyzer
会对其进行分析,并在索引中转换为小写。
如果您将StringAnalyzer
替换为WhitespaceAnalyzer
,则没有小写过滤器,它会再次起作用(因为您的查询不会转换为小写)。