lucene 搜索-lucene对文件名、文件路径进行索引,搜索的时候不能检索出来

问题描述

lucene对文件名、文件路径进行索引,搜索的时候不能检索出来
如题,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.YESField.Index.NOT_ANALYZED));
doc.add(new Field(""fullpath""f.getCanonicalPath()Field.Store.YESField.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_35fullpath"" 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""));    }}

请给位大神帮忙,谢谢!

解决方案

转义不是反斜杠吗,你有检查索引时和搜索时的分析器一样吗?另外,你可以用luke查看一下,你的数据到底被索引成什么。

时间: 2024-11-08 19:58:56

lucene 搜索-lucene对文件名、文件路径进行索引,搜索的时候不能检索出来的相关文章

lucene对文件名、文件路径进行索引,搜索的时候不能检索出来

问题描述 如题,lucene对文件名.文件路径都进行了索引,因为文件名.文件路径都包含特殊字符斜杠(/)和点(.),导致搜索的时候输入文件名或者路径,都无法搜索,使用/对字符进行转义也不行,请帮忙.部分代码如下:protectedDocumentgetDocument(Filef)throwsIOException{Documentdoc=newDocument();doc.add(newField("contents",newFileReader(f)));//System.out.

Nginx中的root&alias文件路径及索引目录配置详解_nginx

root&alias文件路径配置nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应.root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上. [root] 语法:root path 默认值:root html 配置段:http.server.location.if [alias] 语法:alias path 配置段:location 实例: locat

cstring-MFC 如何实现路径选择中,既可以把文件名作为路径,也可以把文件夹中的子文件作为路径?

问题描述 MFC 如何实现路径选择中,既可以把文件名作为路径,也可以把文件夹中的子文件作为路径? void CtestDlg::OnBnClickedLjButton() { // TODO: Add your control notification handler code here CString FilePathName,filter; filter="??(*.??)|*.??||*.*||(*)"; CFolderPickerDialog dlg(filter); if (

新版迅雷增加搜索下载任务及文件功能

正如迅雷7.9.10.4588优先体验版发布时所说的那样,新东西来了!其中特别有意思的是"下载速度排名"功能,我们动态采集不同带宽下的迅雷下载每个任务时的下载速度,并计算得出当前带宽的"雷友平均下载速度".该数字直观的反映了当前任务的资源丰富程度. 下载地址: http://down.sandai.net/thunder7/Thunder7.9.10.4610.exe 更新信息: 迅雷7.9.10.4610正式版(2013-10-09) ==============

Lucene 3.6.2入门(14) SolrJ操作索引和搜索文档以及整合中文分词

package com.jadyer.solrj; import java.util.ArrayList; import java.util.List; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.sol

Lucene.Net 2.3.1开发介绍 —— 四、搜索(一)

原文:Lucene.Net 2.3.1开发介绍 -- 四.搜索(一) 既然是内容筛选,或者说是搜索引擎,有索引,必然要有搜索.搜索虽然与索引有关,那也只是与索引后的文件有关,和索引的程序是无关的,因此,搜索和索引一般是分开部署.简单地说,就是一个应用程序(桌面程序)来索引,一个WEB程序来实现搜索.当然,为了测试的时候简单,这里还是使用NUnit的方式运行.搜索讲完后,将会简单介绍单机搜索引擎如何部署. 4.1 搜索与什么有关 搜索与什么有关呢?即使没有看过前面的文章,那么现在来随便猜一猜. 首

php从完整文件路径中分离文件目录和文件名的方法_php技巧

本文实例讲述了php从完整文件路径中分离文件目录和文件名的方法.分享给大家供大家参考.具体分析如下: basename()函数用于从路径中获得文件名 dirname()函数用于从路径中获得文件目录 <?php $full_name = 'c:\wamp\php\php.ini'; $base = basename($full_name); // $base is "php.ini" $dir = dirname($full_name); // $dir is "c:\w

php从完整文件路径中分离文件目录和文件名的方法

 这篇文章主要介绍了php从完整文件路径中分离文件目录和文件名的方法,涉及php中basename及dirname函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php从完整文件路径中分离文件目录和文件名的方法.分享给大家供大家参考.具体分析如下: basename()函数用于从路径中获得文件名 dirname()函数用于从路径中获得文件目录 ? 1 2 3 4 5 <?php $full_name = 'c:wampphpphp.ini'; $base = b

C#从字符串中分离文件路径、文件名及扩展名

开发程序时,为了更好的识别文件的相关属性,经常需要将文件的路径.名称及其扩展名从一个字符串中分离出来,这时可以使用Substring方法在字符串中进行相应的截取,然后输出即可.从字符串中分离文件路径.文件名及扩展名的关键代码如下: string strPath = textBox1.Text.Substring(0, textBox1.Text.LastIndexOf("\\")); string strName=textBox1.Text.Substring(textBox1.Tex