繁体   English   中英

如何使Sphinx更加宽松地匹配?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM