我有一个例外文件,它破坏了ignore_chars指令的功能。
我正在使用的示例关键字是t-shirt
。
t-shirt
出现在数据库中。我需要ignore_chars指令忽略-
,以便用户可以搜索tshirt
或t-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工作正常,搜索再次对关键字起作用。
答案 0 :(得分:0)
我走这条道路的原因是因为我无法使字形t shirt > tshirt
起作用。
Wordforms在被标记化后应用,我认为这是它无效的原因。
事实证明,我的min_word_len
设置为3
,因此t
中的t shirt
无法正确阅读。我将min_word_len
缩减为1
,现在字形正常工作。
这仍然无法解决ignore_chars
和exceptions
的问题,但搜索字词现在有效,所以我想这是我需要的工作。