[英]How to make Sphinx match more loosely?
我正在使用PHP库中的默认设置,并且正在使用最新版本的Sphinx(2.2.3)。 我需要使搜索结果更宽松地匹配。 这是我在sphinx.conf
索引设置:
morphology = stem_en
min_word_len = 1
min_prefix_len = 1
prefix_fields = name
expand_keywords = 1
如果我在自己的网站上搜索Nexus 7
,则会显示大量搜索结果(Nexus 7平板电脑,然后有很多配件),但是如果我搜索ASUS New Nexus 7 FHD Tablet, Black
则只有平板电脑显示(没有配件)。 就像Sphinx没有显示配件一样,因为它们没有包含搜索中的所有关键字。
如何使Sphinx更“宽松”地匹配项目,以便仍然显示不完全匹配的项目?
使用Quorum语法可以对此进行控制,
http://sphinxsearch.com/docs/current.html#extended-syntax
例如
$terms = '"'.$client->EscapeQuery($_POST['terms']).'"/0.7';
这样,您现在可以精确地控制许多单词。 -例如该示例中70%的单词。 可以更改它与口味的确切比例-或使用整数ef
$terms = '"'.$client->EscapeQuery($_POST['terms']).'"/3';
需要三个词。
比任何人都好,它只需要一个单词。 在该示例中,即使仅匹配“ 7”的所有文档也将包括在内。
但是需要明确的是,没有“魔术”解决方案可以完美地实现“模糊”匹配。 它始终基于折衷,使其看起来像是明智的。 您可能需要做很多调整才能获得可接受的结果-并可能使用多种技术。
我猜您正在将PECL sphinx模块用于PHP ...
您要考虑将setMatchMode()
设置为SPH_MATCH_ANY
。
即。
$terms = $_POST['terms'];
$client = new SphinxClient();
$client->SetMatchMode(SPH_MATCH_ANY);
$res = $client->Query($terms, 'your_index');
...
可以在这里找到更多详细信息... http://php.net/manual/zh/sphinxclient.setmatchmode.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.