WildCardQuery通配符查找

/*

* 通配符的概念已经被使用很久了,从最早的DOS时代一直到今天。

* 通常情况下,在通配符中使用"*"来表示0到多个字符,

* 而使用"?"来表示一个单一的字符。

* Lucene中提供了的通配符搜索工具WildcardQuery。

* 具体的使用非常简单,

* 就首先设定一个带通配符的字符串,

* 再包装成Term对象,然后将其作为wildCardQuery的构造函数的参数传入其中。

* */

package query;

import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;

import org.apache.lucene.document.Document;

import org.apache.lucene.document.Field;

import org.apache.lucene.index.IndexWriter;

import org.apache.lucene.index.Term;

import org.apache.lucene.search.Hits;

import org.apache.lucene.search.IndexSearcher;

import org.apache.lucene.search.WildcardQuery;

public class WildCardQueryTest {

public WildCardQueryTest(String INDEX_STORE_PATH){

try{

IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true);

writer.setUseCompoundFile(false);

Document doc1 = new Document();

Document doc2 = new Document();

Document doc3 = new Document();

Document doc4 = new Document();

Document doc5 = new Document();

Document doc6 = new Document();

Field f1 = new Field("content", "word", Field.Store.YES, Field.Index.TOKENIZED);

Field f2 = new Field("content", "work", Field.Store.YES, Field.Index.TOKENIZED);

Field f3 = new Field("content", "world", Field.Store.YES, Field.Index.TOKENIZED);

Field f4 = new Field("content", "seed", Field.Store.YES, Field.Index.TOKENIZED);

Field f5 = new Field("content", "sword", Field.Store.YES, Field.Index.TOKENIZED);

Field f6 = new Field("content", "ford", Field.Store.YES, Field.Index.TOKENIZED);

doc1.add(f1);

doc2.add(f2);

doc3.add(f3);

doc4.add(f4);

doc5.add(f5);

doc6.add(f6);

writer.addDocument(doc1);

writer.addDocument(doc2);

writer.addDocument(doc3);

writer.addDocument(doc4);

writer.addDocument(doc5);

writer.addDocument(doc6);

writer.close();

IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);

//构建一个带有通配符的词条

Term t = new Term("content", "?o*");

WildcardQuery query = new WildcardQuery(t);

Hits hits = searcher.search(query);

for(int i = 0; i < hits.length(); i++){

System.out.println(hits.doc(i));

}

}catch(IOException e){

System.out.println("查找有误,请仔细检查");

e.printStackTrace();

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("开始执行通配符查找---------------------->>>");

System.out.println("查找中,请稍后---------------------->>");

WildCardQueryTest wt = new WildCardQueryTest("E:\\Lucene项目\\索引文件");

System.out.println("查找完毕");

}

}

时间: 2024-07-28 14:38:21

WildCardQuery通配符查找的相关文章

C++使用通配符查找文件(FindFirstFile)

调用 FindFirstFile 和 FindNextFile 可搜索某个目录下的相应文件. BOOL SearchFilesByWildcard(WCHAR *wildcardPath) { HANDLE hFile = INVALID_HANDLE_VALUE; WIN32_FIND_DATA pNextInfo; hFile = FindFirstFile(wildcardPath,&pNextInfo); if(INVALID_HANDLE_VALUE == hFile) { retur

带通配符,查找 指定目录下文件的SQL存储过程

通配符查找 指定目录下文件的过程: --查找指定文件夹(目录)下的文件. ALTER PROCEDURE [FileS].[DIR_FileS] @Path nvarchar(1000) --搜索路径.         --表示[文件夹路径]必须以'\'结尾:         --表示[文件路径]不能以\结尾.(文件名可带通配符) ,@FileS nvarchar(MAX) OUTPUT --返回 找到的 文件名串 ,@Depth int=1 --搜索[文件夹]深度.不为1,将搜索[子文件夹].

Python中如何查找和替换文本?

在Python开发中查找和替换非常简单,如果当前对象是一个字符串 str 时,你可以使用该类型提供的 find() 或者 index() 方法查找指定的字符,如果能找到则会返回字符第一次出现的索引,如果不存在则返回-1. >>> s = 'Cat and Dog'>>> s.find('Dog')8>>> s.index('Dog')8>>> s.find('Duck') -1 如果要替换目标字符串,用 replace() 方法就好了

(转)使用wildcards(通配符)和regular expressions(正则表达式)搜索

使用wildcards(通配符)搜索   https://wenku.baidu.com/view/5752bd2c2af90242a895e55b.html 使用正则表达式搜索   http://blog.csdn.net/lihuang319/article/details/52670535 使用通配符搜索 使用通配符查找和替换 例如,可用星号 (*) 通配符搜索字符串(使用 "s*d" 将找到 "sad" 和 "started" ). 1.

Linux系统查找

1. which:在当前用户环境变量path指定的路径下查找可执行程序/文件. 特点:(1)只在当前用户环境变量指定的路径下查找: (2)只找出可执行程序/文件的位置: (3)查找速度非常快. 注:使用env命令可以查看当前用户的环境变量path的值:可以通过修改 /root/.bash_profile文件来修改path,修改后需用户重新登录才能生效. 2. whereis:在数据库中查找,列出所有与查找程序/文件相关的文件位置. 特点:(1)在数据库中查找文件信息: (2)列出所有与查找程序/

巧用通配符解决办公问题

Word中的“查找替换”功能十分强大,不仅仅可以简单地查找替换某个字符或者词组,如果能配合通配符使用的话则可以实现我们日常办公中的一些特殊需要,从而大大提高我们的办公效率. 1.为完形填空中添加下划线 在制作英语试卷的阅读理解时,最麻烦的就是在英语的文章中输入带下划线的数字了.常规的方法是用“格式刷“工具一个一个地复制格式,能不能用格式替换的方法来实现呢?答案是肯定的.沈阳463整形医院http://www.hengnaya.com/ 在输入这些带有下划线的数字时无需设置任何格式或在其左右添加过

shell文件查找和压缩命令

locate命令 1.locate filename     模糊匹配 只要文件名中包含关键字即可     非实时查找,速度比find快.     依靠索引数据库 /var/lib/mlocate/mlocate.db     每天自动运行一次来更新数据库.     updatedb 更新索引数据库 2.适合搜索变化不太频繁的文件.对系统的资源消耗不大. 3.实例 1.    locate -r "^/etc/.*\.conf$" find命令 实时查找工具,通过遍历指定路径来完成文件

通配符 特殊符号与正则表达式

课前:磁盘空间不足系列:原因 排查过程 解决 1.block df -h; du -sh /data/* 具体的文件或目录 确认之后删除 2.block(硬连接数为0 进程调用数不为0) lsof|grep delete 重启对应的服务3.inode df -i; 找出系统中大于1M的目录 删除大量小文件 时间:Mtime Modify time 修改时间Ctime Change time 文件属性变化时间atime Access time 访问时间(cat)Stat/etc/hosts 三种时

【转载】Lucene.Net无障碍学习和使用:搜索篇

在上一篇中,我们初步理解了索引的增删改查基本操作.本文着重介绍一下常用的搜索,以及搜索结果的排序和分页.本文的搜索主要是基于前一篇介绍的文本文件的索引,建议下载最后改进的demo对照着看阅读本文,同时大家可以自己动手创建一些测试文本,然后建立索引并搜索试试看. 一.初步认识搜索 先从上一篇示例代码中我们摘录一段代码看看搜索的简单实现: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 private TopDocs Searc