不使用queryparser并使用phrasequery或termquery有什么好处?在我看来,您可以使用queryparser来替换其中任何一个?
例如,如果我想搜索确切的短语,我可以这样做:
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(path));
request.setTitle("stations.json");
request.setDescription("File is being downloaded.....");
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setDestinationInExternalFilesDir(getApplicationContext(), null, "stations.json");
request.setVisibleInDownloadsUi(false);
manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
jsonRef = manager.enqueue(request);
或者如果我想搜索2个术语,我可以
String searchString = "\"word1 word2\"";
QueryParser queryParser = new QueryParser(Version.LUCENE_46,"content", analyzer);
Query query = queryParser.parse(searchString);
目前,我只使用queryparser,它对我有用,但这是使用Lucene的正确方法吗?
答案 0 :(得分:0)
不使用QueryParser
的主要缺点是(特别是使用Solr / Elastic时的情况):
当您创建TermQuery
时,就像这样:
Query q = new TermQuery("text", "keyword")
问题是您需要手动应用分析仪/过滤器。让我们说用户类型KeyWord
,如果你只是将它传递给TermQuery
,你就找不到任何东西,如果你在使用小写的索引时间。当然,小套管很简单,但是您是否希望在代码中应用所有内容以进行干扰/清理等,而不是依赖于分析器/过滤器的现有功能?