这是我第一次使用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
...
上面的文件是一个包含1,000,000行的文本文件。现在我想从文件中找到地址为address1
且其爱好为football
的记录,然后将记录放入另一个文件中:
1,namm1,address1,football
8,namm8,address1,football
...
第一个文件非常大,因此一个接一个地找到记录会很慢。我想和Lucene一起为第一个文件构建一个索引(根据地址和爱好)。然后我可以快速找到地址为address1
且其爱好为football
的记录,并将其放入新文件中。我从未用Lucene编程。谁可以给我一个类似的例子?
答案 0 :(得分:0)
这很简单。使用Lucene索引文件时,可以定义自己的“Analyzer”。简而言之,分析器从源中提取信息并将其放入lucene“文档”的“字段”中。
当您搜索某些内容时,您可以定义Lucene应考虑的字段。
因此,在您的情况下,解决方案是编写一个分析器,将每列放入一个字段中。使用MultiFieldQueryParser
并在查询中指定字段名称。对于您的示例,查询将是
address:address1 hobby:football
答案 1 :(得分:0)
我认为他根本不需要编写分析器,他可以使用java代码解析每一行,并使用众多内置分析器之一将每个值放入相应的字段中