java里索引是什么意思

Python027

java里索引是什么意思,第1张

java 编程中索引是对数据库表中一列或多列的值进行排序的一种结构(B树-平衡多叉树)。

创建索引可以大大提高系统的性能。

第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能

使用jdbc技术连接数据库

使用语句对象statement的execute方法可以执行对索引的操作

例如代码如下

public class IndexFiles {

//使用方法:: IndexFiles [索引输出目录] [索引的文件列表] ...

public static void main(String[] args) throws Exception {

String indexPath = args[0]

IndexWriter writer

//用指定的语言分析器构造一个新的写索引器(第3个参数表示是否为追加索引)

writer = new IndexWriter(indexPath, new SimpleAnalyzer(), false)

for (int i=1i<args.lengthi++) {

System.out.println("Indexing file " + args[i])

InputStream is = new FileInputStream(args[i])

//构造包含2个字段Field的Document对象

//一个是路径path字段,不索引,只存储

//一个是内容body字段,进行全文索引,并存储

Document doc = new Document()

doc.add(Field.UnIndexed("path", args[i]))

doc.add(Field.Text("body", (Reader) new InputStreamReader(is)))

//将文档写入索引

writer.addDocument(doc)

is.close()

}

//关闭写索引器

writer.close()

}

}

public class Search {

public static void main(String[] args) throws Exception {

String indexPath = args[0], queryString = args[1]

//指向索引目录的搜索器

Searcher searcher = new IndexSearcher(indexPath)

//查询解析器:使用和索引同样的语言分析器

Query query = QueryParser.parse(queryString, "body",

new SimpleAnalyzer())

//搜索结果使用Hits存储

Hits hits = searcher.search(query)

//通过hits可以访问到相应字段的数据和查询的匹配度

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

System.out.println(hits.doc(i).get("path") + "Score: " +

hits.score(i))

}

}

}在整个检索过程中,语言分析器,查询分析器,甚至搜索器(Searcher)都是提供了抽象的接口,可以根据需要进行定制。

分 析:

索引过程中可以看到:

语言分析器提供了抽象的接口,因此语言分析(Analyser)是可以定制的,虽然lucene缺省提供了2个比较通用的分析器SimpleAnalyser和StandardAnalyser,这2个分析器缺省都不支持中文,所以要加入对中文语言的切分规则,需要修改这2个分析器。

Lucene并没有规定数据源的格式,而只提供了一个通用的结构(Document对象)来接受索引的输入,因此输入的数据源可以是:数据库,WORD文档,PDF文档,HTML文档……只要能够设计相应的解析转换器将数据源构造成成Docuement对象即可进行索引。

对于大批量的数据索引,还可以通过调整IndexerWrite的文件合并频率属性(mergeFactor)来提高批量索引的效率。

总 结:

搜索结果返回的是Hits对象,可以通过它再访问Document==>Field中的内容。假设根据body字段进行全文检索,可以将查询结果的path字段和相应查询的匹配度(score)打印出来,

在一个String字符串中 查找某个汉字的索引 可以使用str.indexOf("字")  获取在字符串中的索引位置,同样索引从0开始,若字符串中没有该汉字, 返回-1就行了。

Java

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。