mta*_*riq 5 indexing search solr search-engine
我正在评估Solr 4.0和Elastic Search 0.20.5以进行linkedin类型搜索,并想知道如何存储用户配置文件的Normalize数据,这可以使用嵌套文档在elasticsearch中轻松实现.
例如
Person Json
{
first_name: abc,
last_name: xyz,
school: [{
name: some school,
degree: x-Degree,
startDate:12-02-2009
},
{
name: some school2,
degree: x-Degree-2,
startDate:12-02-2012
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想搜索用户学校名称,学位和目前学习类似于linkedin搜索,
在Solr中索引和搜索它的最佳方法是什么?
索引应该使用多值字段来完成
\n\n<field name="first_name" indexed="true" />\n<field name="last_name" indexed="true" />\n<field name="school_name" multiValued="true" indexed="true" />\n<field name="school_degree" multiValued="true" indexed="true" />\n<field name="school_start_date" multiValued="true" indexed="true" />\nRun Code Online (Sandbox Code Playgroud)\n\n
\n搜索, \n搜索像 school_name 这样的单个字段将与普通字段搜索一样简单,但是对多个嵌套字段的搜索应区别对待,
将 SpanTermQueries 与 FiledMaskingSpanQuery 组合并将它们放入 SpanNearQuery 中,可以搜索学校位置的交集,并正确找到包含指定项目的人员(school_name:some school 和 school_ Degree:x-Degree):
\n\nSpanNearQuery(\n SpanTermQuery("school_name", "some school\xe2\x80\x9d),\n FieldMaskingSpanQuery(\n SpanTermQuery("school_degree", "x-Degree"),\n \xe2\x80\x9cschool_name\xe2\x80\x9d\n ), -1, false\n)\nRun Code Online (Sandbox Code Playgroud)\n\n\n