0

我有以下情况:

我有一个人的默认字段,例如:姓名,名字,电话,电子邮件,...

一个人有很多语言技能,语言技能实体有以下领域:语言、口语、写作、理解、母语

一个人有很多工作经验,字段包括:办公室、描述、期间、地点

我如何用 Lucene.net 索引这样的东西?

可以进行以下搜索:

 - FirstName:"Arno" AND LanguageSkill:(Language:"Dutch" AND Speaking:[3 TO 5])
 - FirstName:"Arno" AND WorkExperience:(Description:"Marketing")
 - FirstName:"Arno" AND WorkExperience:(Description:"Marketing" OR Description:"Sales")
 - FirstName:"Arno" AND WorkExperience:(Description:"Programmer") AND LanguageSkill:(Language:"English" AND Speaking:[3 TO 5] AND MotherTongue:"true")

在 Lucene 中是否有可能发生这样的事情,我已经尝试在文档看起来像这样的地方扁平化我的关系:

Name:"Stallen"
FirstName:"Arno"
WorkExperience:"Office=Lidl Description=Sales Location=London"
WorkExperience:"Office=Abro Description=Programmer Location=London"
LanguageSkill:"Language=Dutch Speaking=3 Writing=1 Understanding=3"
LanguageSkill:"Language=Egnlish Speaking=5 Writing=4 Understanding=5 MotherTongue=true"
4

2 回答 2

1

我最终使用了包含父子文档的 Java 版本的 Lucene (3.6)。我使用 IKVM 从中生成 .net DLL。

于 2012-09-04T13:59:13.937 回答
1

“如果你只有一把锤子,那么一切看起来都像钉子”

您的要求更适合关系数据库。我会这样做,因为我没有看到任何与自由文本搜索相关的内容

但是,如果您必须使用 Lucene.Net,您应该将数据扁平化一点,例如

Name:"Stallen"
FirstName:"Arno"
WorkExperienceDescription:Sales
WorkExperienceLocation:London
LanguageSkillLanguage:Dutch
LanguageSkillLanguage:English

当然,这会导致一些信息丢失,您将无法进行类似的搜索

名字:“Arno”和语言技能:(语言:“荷兰语”和口语:[3 到 5])

LanguageSkillLanguagePS:您可以在单个文档中多次使用相同的字段名(例如, )。

于 2012-08-06T20:25:24.337 回答