我们使用带有RealTime(RT)索引的sphinx来搜索我们的数据库。现在它包含经度,纬度,标题,内容等字段,一切正常。问题是我们想要实现一个关系Tag-table,我们不知道该怎么做。
在我们当前的配置中,我们利用了sphinxApi(for php)中提供的许多预配置方法,例如:
$this->_sphinxClient->setMatchMode(SPH_MATCH_EXTENDED2);
$this->_sphinxClient->SetGeoAnchor('latitude', 'longitude', (float)$this->latitude, (float)$this->longitude);
$this->_sphinxClient->SetFilterRange('price', $this->_priceMin, $this->_priceMax);
// And getting the final result with the:
$result = $this->_sphinxClient->Query($this->searchString, 'rt');
如果可能,我们想要做的是使用mva(多值属性)或使用join语句第二次搜索结果,并逐出不包含任何标记的结果。
我们目前无法使用这些选项,所以如果有人有任何想法,我会在这里得到一些帮助。使用另一个带有id / tagname组合的索引或当前的一个字符串属性?在与第一个查询相同的查询中实现搜索,或使用tagjoin在第二个查询中搜索这些结果?
如果我错过了任何重要的信息,请告诉我,并提前感谢您!
答案 0 :(得分:1)
将标记附加到当前索引。如果您只需要搜索它们,请在全文字段和字符串属性中插入标记,如果您想在结果中获取标记。如果您需要进行分组,您可以:
对于分组,请记住使用SetArrayResult(true)。我还建议切换到SphinxQL界面。