Sphinxsearch ignore_chars和例外工作

时间:2014-02-21 20:48:34

标签: mysql sphinx

我有一个例外文件,它破坏了ignore_chars指令的功能。

我正在使用的示例关键字是t-shirt

t-shirt出现在数据库中。我需要ignore_chars指令忽略-,以便用户可以搜索tshirtt-shirt并获得相同的结果。

此处CALL KEYWORDS('tshirt t-shirt', 'catalog')的结果是

+-----------+------------+
| tokenized | normalized |
+-----------+------------+
| tshirt    | TXRT       |
| tshirt    | TXRT       |
+-----------+------------+

要让t shirt映射到上面的结果,我创建了一个异常文件,如下所示:

t shirt > tshirt

当我进行查询CALL KEYWORDS('t shirt tshirt t-shirt', 'catalog')时,这就是我得到的:

+-----------+------------+
| tokenized | normalized |
+-----------+------------+
| tshirt    | TXRT       |
| tshirt    | TXRT       |
| shirt     | XRT        |
+-----------+------------+

我期望发生的是异常文件会将'words't shirt重写为单个关键字tshirt,并且所有3个令牌都具有相同的标准化值。

现在,-关键字中的t-shirt不会被忽略,而只会映射到shirt,这会产生与tshirt完全不同的规范化版本。除此之外,使用上述任何相关关键字进行搜索会返回0结果。

当我取出例外文件时,ignore_chars工作正常,搜索再次对关键字起作用。

1 个答案:

答案 0 :(得分:0)

我走这条道路的原因是因为我无法使字形t shirt > tshirt起作用。

Wordforms在被标记化后应用,我认为这是它无效的原因。

事实证明,我的min_word_len设置为3,因此t中的t shirt无法正确阅读。我将min_word_len缩减为1,现在字形正常工作。

这仍然无法解决ignore_charsexceptions的问题,但搜索字词现在有效,所以我想这是我需要的工作。