如何在单个字段下索引和搜索多个值。
例如说我有一个领域处理器这可能有i3,i5,i7 or i3 or i3,i5价值观。
现在想象一下笔记本电脑的数据如下:
data1:
name= laptop name
price = laptop price
processor=core duo
data2:
name= laptop name
price = laptop price
processor=i3,i5
data3:
name= laptop name
price = laptop price
processor=i3,i5,i7
Now,
如果用户只想搜索 i3 和 i5 处理器,则应仅显示 data2 和 data3。
所以我的问题是我应该如何index and search卢森。我使用的是lucene 4.4。
我检查了this https://stackoverflow.com/questions/401754/field-having-multiple-distinct-values但无法理解,因为没有例子。一个例子对我来说会有好处。
坦白说,其实并没有太多内容。使用 使用StandardAnalyzer
和标准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);
StandardAnalyzer 将根据标点符号(和空格等)进行标记,在“处理器”字段中对标记“i3”、“i5”和“i7”进行索引,因此在使用时仅使用标准QueryParser
(see 查询解析器语法 http://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Overview),查询:
processor:(i3 i5)
将在“处理器”字段中找到带有“i3”或“i5”的任何字段
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)