我正在使用 Lucene 4.3 在我的项目中编写全文搜索功能当我添加数据时一切正常,但是在查询时,只有当查询中的至少一个单词与字段值中的至少一个单词匹配时,我才会得到命中索引。
例如,如果我添加
private static StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
public static void addCustomerDoc(Map<String, String[]> parameters, String path, long customerId) throws IOException {
File file = new File(path + "/index/");
FSDirectory indexDir = FSDirectory.open(file);
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, analyzer);
IndexWriter writer = new IndexWriter(indexDir, config);
Document doc = new Document();
doc.add(new TextField("email", parameters.get("email")[0].toString(), Field.Store.YES));
doc.add(new TextField("username", parameters.get("username")[0].toString(), Field.Store.YES));
doc.add(new TextField("phone", parameters.get("phone")[0].toString(), Field.Store.YES));
doc.add(new StringField("customerId", "" + customerId, Field.Store.YES));
addDoc(writer, doc);
writer.close();
}
private static void addDoc(IndexWriter writer, Document doc) throws IOException {
writer.addDocument(doc);
writer.commit();
}
添加用户喜欢
- 用户名 = foobar
- 电子邮件 = foobar@example.com
- 电话 = 0723123456
如果我搜索 foo、fooba 或 foobarx,即使我输入 f 或超过单词 foobar,我也不应该得到结果吗?