Lucene使用不同的文件来搜索文本
Lucene to use different files to search text
我正在处理一项需要使用 lucene 搜索文本的任务。但这里的要求是其他应用程序使用已经创建的段、.si、.cfe 和.cfs 文件。
我能够获取这些文件,但在搜索文本时它不会显示结果。
用于搜索的代码是:
public void searchText(String indexPath, String searchString) {
try {
Analyzer analyzer = new StandardAnalyzer();
File indexDirectory = new File(indexPath);
Directory directory = FSDirectory.open(indexDirectory.toPath());
IndexReader directoryReader = DirectoryReader.open(directory);
IndexSearcher searcher = new IndexSearcher(directoryReader);
QueryParser parser = new QueryParser("requiredtext", analyzer);
Query query = parser.parse(searchString);
System.out.println(query);
// Parse a simple query that searches for "text":
ScoreDoc[] hits = searcher.search(query, 10).scoreDocs;
// Iterate through the results:
for (int i = 0; i < hits.length; i++) {
Document hitDoc = searcher.doc(hits[i].doc);
}
analyzer.close();
directoryReader.close();
directory.close();
}
catch (Exception ex){
System.out.println("Exception - "+ex.getMessage());
}
}
我正在使用 Lucene 版本 8.11.1 Java8。
问题是:在 Lucene 中是否可以 read/find/search 由其他应用程序写入文件并由其他应用程序搜索的文本。如果是请指点如何?
阿图尔
我发现了问题并修复了它。
我正在寻找字段“requiredtext”中的数据,但索引器不会像索引时那样存储该字段的数据它不会为此字段设置 属性 "TextField.Store.YES",这就是我无法获得我正在寻找的字段的数据的原因。
我得到了设置 属性 的其他字段的数据。
我的问题是是否可以搜索由其他应用程序创建的其他文件的数据?所以答案是肯定的。 @andrewJames 的回答有助于证明这一点。
我正在处理一项需要使用 lucene 搜索文本的任务。但这里的要求是其他应用程序使用已经创建的段、.si、.cfe 和.cfs 文件。
我能够获取这些文件,但在搜索文本时它不会显示结果。
用于搜索的代码是:
public void searchText(String indexPath, String searchString) {
try {
Analyzer analyzer = new StandardAnalyzer();
File indexDirectory = new File(indexPath);
Directory directory = FSDirectory.open(indexDirectory.toPath());
IndexReader directoryReader = DirectoryReader.open(directory);
IndexSearcher searcher = new IndexSearcher(directoryReader);
QueryParser parser = new QueryParser("requiredtext", analyzer);
Query query = parser.parse(searchString);
System.out.println(query);
// Parse a simple query that searches for "text":
ScoreDoc[] hits = searcher.search(query, 10).scoreDocs;
// Iterate through the results:
for (int i = 0; i < hits.length; i++) {
Document hitDoc = searcher.doc(hits[i].doc);
}
analyzer.close();
directoryReader.close();
directory.close();
}
catch (Exception ex){
System.out.println("Exception - "+ex.getMessage());
}
}
我正在使用 Lucene 版本 8.11.1 Java8。
问题是:在 Lucene 中是否可以 read/find/search 由其他应用程序写入文件并由其他应用程序搜索的文本。如果是请指点如何?
阿图尔
我发现了问题并修复了它。
我正在寻找字段“requiredtext”中的数据,但索引器不会像索引时那样存储该字段的数据它不会为此字段设置 属性 "TextField.Store.YES",这就是我无法获得我正在寻找的字段的数据的原因。
我得到了设置 属性 的其他字段的数据。
我的问题是是否可以搜索由其他应用程序创建的其他文件的数据?所以答案是肯定的。 @andrewJames 的回答有助于证明这一点。