这最近令我感到困惑,我似乎无法在任何地方找到合适的解释.
如果我运行使用查询API构建的查询,它可以很好地工作.
TermQuery sourceQuery = new TermQuery(new Term("source", "CNN"));
Run Code Online (Sandbox Code Playgroud)
运行results = searcher.search(sourceQuery, 30)和检查results.totalHits显示值为159.
但是,在同一个程序中,我设置了一个QueryParser(我的默认字段被调用text):
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
QueryParser parser = new QueryParser(Version.LUCENE_35,
"text", analyzer);
Run Code Online (Sandbox Code Playgroud)
并输入命令行查询
source:CNN
Run Code Online (Sandbox Code Playgroud)
我没有结果.在Luke 上运行此命令确实给了我一个结果.有谁知道发生了什么?
您可能使用了错误的Analyzer作为QueryParser对象.注意:
我猜你索引文本时你的术语是大写的(或者变成大写).这解释了为什么方法1和3工作,但2没有,因为案例不匹配.通常,在索引和搜索时使用相同的分析器是一个好主意,或者至少要注意这种情况.