如题,lucene对文件名、文件路径都进行了索引,因为文件名、文件路径都包含特殊字符斜杠(/)和点(.),导致搜索的时候输入文件名或者路径,都无法搜索,使用/对字符进行转义也不行,请帮忙。
部分代码如下:
protected Document getDocument(File f) throws IOException {
Document doc = new Document();
doc.add(new Field("contents", new FileReader(f)));
// System.out.println("=======f.getCanonicalPath()========"+f.getCanonicalPath());
// System.out.println("=======f.getName()========"+f.getName());
doc.add(new Field("fileName", f.getName(), Field.Store.YES,Field.Index.NOT_ANALYZED));
doc.add(new Field("fullpath",f.getCanonicalPath(),Field.Store.YES,Field.Index.NOT_ANALYZED));
return doc;
}
public void searchIndex(String key) throws CorruptIndexException, IOException, ParseException{
key = "C??work?output?张三?txt";
docDir = new File(indexDir);
dir = FSDirectory.open(docDir);
IndexSearcher indexSearcher = new IndexSearcher(dir);
QueryParser parser = new QueryParser(Version.LUCENE_35, "fullpath", new StandardAnalyzer(Version.LUCENE_35));
Query query = parser.parse(key);
TopDocs topDocs = indexSearcher.search(query, 10);
System.out.println("====totalHits===="+topDocs.totalHits);
for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
Document doc = indexSearcher.doc(scoreDoc.doc);
System.out.println("====fullpath===="+doc.get("fullpath"));
System.out.println("====fileName===="+doc.get("fileName"));
}
}
请给位大神帮忙,谢谢!