我希望为最终用户提供对所有业务对象进行自由格式搜索的能力。用户将提供Lucene搜索表达式。业务对象完全不相关,没有任何共同之处。
每个业务对象都包含自己的特定属性。为了这个问题,以下是业务对象:
博客 { 标题; 身体; }
用户 { 名字; 姓; 国家; 电子邮件地址; 性别(男/女); }
如何创建可以提供以下用例的索引:
自由格式文本搜索 - 博客和用户。对于例如搜索出现“印度”一词的用户和博客条目。不应要求最终用户在所有Lucene文档字段之间指定ORing。
仅针对用户的自由格式文本搜索。对于例如搜索出现“yahoo”一词的用户。不应要求最终用户在与User相关的所有Lucene文档字段之间指定ORing。
仅对博客条目进行自由格式文本搜索。对于例如搜索那些出现“Skeet Async”字样的博客条目。不应要求最终用户在与Blog相关的所有Lucene文档字段之间指定ORing。
按博客条目的属性搜索自由格式文本。对于例如搜索“标题”属性中出现“异步”的博客条目。
按用户属性进行自由格式文本搜索。对于例如搜索“Skeet”出现在“LastName”属性中的用户。
如何定义索引策略 - 单个索引或多个索引,要使用的分析器,如何在搜索查询中提供上下文等。
感谢。
答案 0 :(得分:1)
对于给定的业务对象,最简单的方法是使用以下字段的lucene文档:
title, body, firstName, lastName, country, emailAddress, gender
您可能希望将标题和用户相关字段设为STORED。
分析器的选择取决于您的搜索要求(如您想支持部分匹配,后缀查询,词干等)。
查询给定的用例:
1) title:india OR body:india OR country:india
2) title:yahoo OR body:yahoo OR emailAddress:yahoo
3) title:(Skeet OR Async) OR body:(Skeet OR Async)
4) title:asynchronous
5) lastName:skeet