我正在使用hibernate-search-3.2.1.Final并希望将我的输入解析为带状疱疹。从我在文档中可以看到的,ShingleAnalyzerWrapper看起来正是我所需要的。我已经使用WhitespaceAnalyzer,StandardAnalyzer和SnowballAnalyzer作为ShingleAnalyzerWrapper的默认分析器进行了测试。Hibernate搜索ShingleAnalyzer打包工作示例
Version luceneVersion = Version.LUCENE_29;
SnowballAnalyzer keywordAnalyzer= new SnowballAnalyzer(luceneVersion, "English", StopAnalyzer.ENGLISH_STOP_WORDS_SET);
ShingleAnalyzerWrapper shingleAnalyzer = new ShingleAnalyzerWrapper(keywordAnalyzer, 4);
shingleAnalyzer.setOutputUnigrams(false);
QueryParser keywordParser = new QueryParser(luceneVersion, "keyword", keywordAnalyzer);
Query keywordQuery = keywordParser.parse(QueryParser.escape(keyword.toLowerCase()));
但是,查询返回为空。我期待关键词像“你好的世界,这是Lucene”导致带状疱疹[你好世界这是,世界这是lucene,这是lucene]
让我知道我的期望和使用ShingleAnalyzerWrapper是否正确。
感谢, 瑞安