目前正在尝试使用Sphinx搜索医学名称,并且由于美国结构医学在数据库中命名其所有medicine_type的方式,并且没有办法改变这种情况。
例如,如果我搜索medicine_type,Sphinx会很容易找到它,但是如果我只输入药物名称以显示所有类型的药物,它就不会。
我尝试过启用expand_keywords = 1无济于事。
我能做些什么让Sphinx做我需要的东西吗?
答案 0 :(得分:0)
默认 charset_table
包含下划线作为单词字符
http://sphinxsearch.com/docs/current.html#conf-charset-table
# default are English and Russian letters
charset_table = 0..9, A..Z->a..z, _, a..z, \
U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451
一个简单的解决方案,可能只是从charset表中删除它(即在列表中没有charset_table
明确定义_
!)
# custom charset without understore
charset_table = 0..9, A..Z->a..z, a..z, \
U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451
...然后下划线将采用单词 separator (如空格)并且意思是单词匹配。
(也可以删除一些俄罗斯字符,如果不需要它们。并调查其他字母是否要索引)
也可能至少要考虑blend_chars
http://sphinxsearch.com/docs/current.html#conf-blend-chars
虽然在这种情况下不认为它特别有帮助。