"大小说家"被sphinx分成"大"和"小说家:两个词 , 词典里有"大小", 有没有可能分成"大小"和"小说家"这样

zx32342342 发布于 2013/12/05 15:26
阅读 719
收藏 1
如果只能分成"大"和"小说家", 那么搜索"大小", 是搜索不到的, 这样可不行哦
加载中
0
x
xx-xx-xx
你希望用户用“大小”这个关键词搜索的时候出现“大小说家”这个结果?
z
zx32342342
回复 @ParosFish : 不能这样说啊, 因为如果恰好跟大小有关的就这样一个, 或者都没有被分成大小这个词, 那么搜索结果就是空, 这样是不合理的
x
xx-xx-xx
回复 @风起q : 用户既然是用“大小”这个关键词来搜索,那么出现“大小说家”对他来说就属于一个他不想要的结果(垃圾)。就像你用“猕猴”来搜索猕猴这种动物的资料,却出现“猕猴桃”这样的结果,对你来说这个结果就是你不想要的!
z
zx32342342
0
水煮河蟹
水煮河蟹
这样分不是很好吗?
z
zx32342342
搜索"大小"的时候, 搜索不到"大小说家", 这个是一个专辑的名称, 是需要被搜索到的
0
狮子的魂
狮子的魂

分词器都是按照一定的算法来切分的, 全部算法至少都会遵循汉语的使用习惯规则, "大小说家", 从字面理解, 切分成"大/ 小说家"是最好的结果, 你的这个属于特殊要求了.

我不知道你用的分词器是什么, 可以使用friso试下.

"大小说家", 也会被切分成, 大/ 小说家

但是你可以利用friso的同义词功能来实现这个功能:

1. 在词库中加入"大小说家"词条.

2. 给"大小说家"添加"大小"和"小说家"两个同义词词条.

这样无论你是检索"大小", "小说家"还是"大小说家"都会有检索结果的.

z
zx32342342
... 做到了, 但是怎么和sphinx结合使用呢
z
zx32342342
错了 是就是没有大小
z
zx32342342
先用了coreseek的同义词,也是mmseg分词, 结果分成 大 小说家 小说 就是没有小说 弱智... 我再试下friso
z
zx32342342
谢谢, 我是用的coreseek自带的分词,我试下你说的
0
狮子的魂
狮子的魂

@风起q 

这个要先知道你的逻辑处理语言. 如果是php就使用robbe

1. 在你的逻辑处理层来完成分词.

2. 将friso嵌入到sphinx中去, 这个需要熟悉sphinx的分词接口. 也就是tokenize函数的自定义重写.

狮子的魂
狮子的魂
回复 @风起q : 恩, 东西稍微偏底层了, 一般面对的都是c/c++啦..
z
zx32342342
好的, 看来还是需要学习c/c++啊
返回顶部
顶部