我在房地产网站上工作,我们将属性的位置(地理坐标)存储在一个表中,并将属性属性(如卧室,浴室等)存储在其他表中。
现在,我必须对用户可以输入自由文本的属性实施基于文本的搜索(例如,30区古尔冈的3卧室公寓)。
好的所以这是我的方法,我正在尝试使用solr来解析用户输入的文本,并从中获取含义完整的关键字,以便我可以查询我的数据库以获得结果。
到目前为止,我已在schema.xml
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="text" type="text_en_splitting" indexed="true" stored="true" multiValued="false" />
<field name="type" type="text_en" indexed="true" stored="true" multiValued="false" />
并索引了一些示例数据,如:
{
"id": "4",
"text": "park centra",
"type": "location",
"_version_": 1466432256308412400
},
{
"id": "5",
"text": "park avenue",
"type": "location",
"_version_": 1466432273214603300
},
{
"id": "7",
"text": "swimming pool",
"type": "amenity",
"_version_": 1466432327754186800
},
{
"id": "3",
"text": "sector 30",
"type": "location",
"_version_": 1466432234501177300
},
{
"id": "6",
"text": "City park",
"type": "location",
"_version_": 1466432303613870000
},
{
"id": "2",
"text": "Gurgaon",
"type": "location",
"_version_": 1466432219763441700
},
{
"id": "9",
"text": "bedroom",
"type": "bedroom",
"_version_": 1466432362205151200
},
{
"id": "10",
"text": "bhk",
"type": "bedroom",
"_version_": 1466432369752801300
},
{
"id": "8",
"text": "ATM",
"type": "amenity",
"_version_": 1466432341620555800
}
现在我想让solr为我做的是当用户在第30和第34区输入类似&#34; 2卧室的文本时。 solr应搜索text
字段中的字词,按type
分组,并从每个组中选择最相关的结果。这样我就能得到像
{
"id": "9",
"text": "bedroom",
"type": "bedroom",
"_version_": 1466432362205151200
},
{
"id": "3",
"text": "sector 30",
"type": "location",
"_version_": 1466432234501177300
}
现在我可以轻松地对数据库进行查询并获得结果。
你能告诉我如何从solr中获得这种行为,以及这是否可行?