Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Lucene索引和搜索结构化文本文件?_Java_Lucene_Indexing - Fatal编程技术网

Java 如何使用Lucene索引和搜索结构化文本文件?

Java 如何使用Lucene索引和搜索结构化文本文件?,java,lucene,indexing,Java,Lucene,Indexing,这是我第一次使用Lucene,我有这样一个文本文件: id,name,address,hobby 1,namm1,address1,football 2,namm2,address2,football 3,namm3,address3,football 4,namm4,address4,football 5,namm5,address5,football 6,namm6,address6,basketball 7,namm7,address7,basketball 8,namm8,address

这是我第一次使用Lucene,我有这样一个文本文件:

id,name,address,hobby
1,namm1,address1,football
2,namm2,address2,football
3,namm3,address3,football
4,namm4,address4,football
5,namm5,address5,football
6,namm6,address6,basketball
7,namm7,address7,basketball
8,namm8,address1,football
9,namm9,address8,swimming
...
上面的文件是一个包含1000000行的文本文件。现在我想从文件中找到地址为
address1
且爱好为
football
的记录,然后将该记录放入另一个文件中,如下所示:

1,namm1,address1,football
8,namm8,address1,football
...

第一个文件非常大,因此一个接一个地查找记录将非常缓慢。我想使用Lucene为第一个文件创建一个索引(根据地址和爱好)。然后我可以快速找到地址为
address1
且爱好为
football
的记录,并将其放入新文件中。我从来没有和Lucene一起编程过。谁能给我举个类似的例子?

这很简单。当您使用Lucene为文件编制索引时,您可以定义自己的“分析器”。简而言之,分析器从源中提取信息并将其放入lucene“文档”的“字段”中

当你搜索某物时,你可以定义Lucene应该考虑哪些字段。

因此,您的解决方案是编写一个分析器,将每一列放入一个字段中。使用
MultiFieldQueryParser
并在查询中指定字段名称。例如,查询将是

address:address1 hobby:football

我认为他根本不需要编写分析器,他可以使用java代码解析每一行,并将每一个值放在适当的字段中,使用许多内置分析器中的一个

为什么您如此渴望使用lucene?lucene和IR通常用于非结构化文本。对于结构化文本,您可以使用结构化数据库和sql—这可能会简单得多谢谢您的回复。实际上,我遇到的问题要复杂得多。为了把问题弄清楚,我把它简化了。我用数据库解决了这个问题。但随后,需要更新数千万条记录,并构建大量临时表。时间复杂度和空间复杂度都太难了,所以我想试试Lucene。非常感谢。我会把我的评论写在回答中