Java 使用lucene搜索两个术语时出现问题

Java 使用lucene搜索两个术语时出现问题,java,lucene,Java,Lucene,我在我的项目中编写了以下代码: final IndexSearcher indexSearcher = new IndexSearcher(INDEXING_DIRECTORY, true); final Query query = new QueryParser(Version.LUCENE_33, "keywords", new StandardAnalyzer(Version.LUCENE_33)).parse("cats movies"); final TopScoreDocColl

我在我的项目中编写了以下代码:

final IndexSearcher indexSearcher = new IndexSearcher(INDEXING_DIRECTORY, true);  
final Query query = new QueryParser(Version.LUCENE_33, "keywords", new StandardAnalyzer(Version.LUCENE_33)).parse("cats movies");
final TopScoreDocCollector collector = TopScoreDocCollector.create(10, true);
indexSearcher.search(query, collector);
final ScoreDoc[] hits = collector.topDocs(0, 10).scoreDocs;
这项任务很琐碎

一、 例如,存储一个带有索引“关键字”字段的记录。例如,这些关键词可能类似于“很多电影都有一只有趣的猫”

问题是,如果搜索查询是“有趣的猫”(词序类似于索引字段),我上面的代码将返回记录,但在“猫电影”中会失败。我应该如何编写我的查询,以便它能够匹配任何单词顺序,如果可能的话,还可以搜索类似的单词?

最有可能的是“猫电影”将被解析为
短语查询
。短语查询尊重顺序。您想要的是一个
布尔查询
,其中包含两个
术语查询
,并与
相结合

final Query query = new QueryParser(Version.LUCENE_33, "keywords", new StandardAnalyzer(Version.LUCENE_33)).parse("+cats AND +movies");
下面列出了更多的例子。有些可能已经过时了


相似的单词是一项相当艰巨的任务,因为您需要至少有某种单词列表或数据库来对齐同义词。

请在标题中陈述您的问题。为什么所有的反对票都被否决?似乎是一个有效的问题?将问题中的“短语”替换为“两个术语”。短语不是op想要搜索的东西。谢谢。我会在家里试试:)