Lucene:如何在单个字段下索引和搜索多个值

man*_*ish 4 lucene

如何在单个字段下索引和搜索多个值。

例如说我有一个现场处理器,它可能具有i3,i5,i7i3i3,i5值。现在想象一下笔记本电脑的数据如下:

数据1:

 name= laptop name
 price = laptop price
 processor=core duo
Run Code Online (Sandbox Code Playgroud)

数据2:

 name= laptop name
 price = laptop price
 processor=i3,i5
Run Code Online (Sandbox Code Playgroud)

数据3:

 name= laptop name
 price = laptop price
 processor=i3,i5,i7
Run Code Online (Sandbox Code Playgroud)

现在,

如果用户只想搜索i3和i5处理器,则应仅显示data2和data3。

所以我的问题是我应该如何索引搜索 lucene。我正在使用Lucene 4.4。

我检查了 一下,但不明白,因为那里没有例子。一个例子对我是有好处的。

fem*_*gon 5

坦白说,它并没有太多的意义。使用using StandardAnalyzer和standard QueryParser,您只需将字段以显示的形式添加到文档中,例如:

Document document = new Document();
document.add(new TextField("name", "laptop name"));
document.add(new TextField("processor", "i3,i5,i7"));
//Add other fields as needed...
//Assuming you've set up your writing to use StandardAnalyzer...
writer.addDocument(document);
Run Code Online (Sandbox Code Playgroud)

StandardAnalyzer将对标点符号(和空格等)进行标记化,在“处理器”字段中为标记“ i3”,“ i5”和“ i7”建立索引,因此,仅使用标准QueryParser(请参阅查询解析器语法)时,查询:

processor:(i3 i5)
Run Code Online (Sandbox Code Playgroud)

将在“处理器”字段中找到任何带有“ i3”或“ i5”的字段