-1

我想为最终用户提供对所有业务对象进行自由形式搜索的能力。用户将提供 Lucene 搜索表达式。业务对象完全不相关,没有任何共同之处。

每个业务对象都包含有自己的特定属性。对于这个问题,以下是业务对象:

博客{标题; 身体; }

用户{名字;姓; 国家; 电子邮件地址; 性别(男/女);}

我如何创建一个可以服务于以下用例的索引:

  1. 博客和用户中的自由格式文本搜索。例如,搜索出现“印度”一词的用户和博客条目。不应要求最终用户在所有 Lucene 文档字段之间指定 ORing。

  2. 仅针对用户的自由格式文本搜索。例如,搜索出现“雅虎”一词的用户。不应要求最终用户在与用户相关的所有 Lucene 文档字段之间指定 ORing。

  3. 自由格式文本仅搜索博客条目。例如,搜索那些出现“Skeet Async”一词的博客条目。不应要求最终用户在与博客相关的所有 Lucene 文档字段之间指定 ORing。

  4. 按属性搜索博客条目的自由格式文本。例如,搜索那些在“标题”属性中出现“异步”的博客条目。

  5. 按属性为用户搜索自由格式文本。例如,搜索那些“Skeet”出现在“姓氏”属性中的用户。

如何定义索引策略 - 单个索引或多个索引,使用的分析器,如何在搜索查询中提供上下文等。

谢谢。

4

1 回答 1

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
于 2013-01-03T04:28:30.677 回答