发表回复 
 
主题评价:
  • 0 次(票) - 平均星级: 0
  • 1
  • 2
  • 3
  • 4
  • 5
small50,big161这种词汇搜索不到
2013年06月18日, 10:32 (这个帖子最后修改于: 2013年06月18日 10:32 by hpxl.)
small50,big161这种词汇搜索不到
PHP 代码:
bash-3.2php sdk/php/util/Quest.php spj example_attr:small50 --show-query
--------------------
解析后的 QUERY 语句:Xapian::Query((ZHsmall:(pos=1) AND 50:(pos=2))) 

搜不到任何结果?

Hello world!
查找这个用户的全部帖子
引用并回复
2013年06月18日, 11:00
RE: small50,big161这种词汇搜索不到
example_attr 是分词器之类什么配置呢,你的索引是又存储了什么样的词。
查找这个用户的全部帖子
引用并回复
2013年06月18日, 11:11
RE: small50,big161这种词汇搜索不到
@FIXME: 先记录一下,这是因为你既是自定义分词器又指定了 non_bool 参与权重计算。
那么 SDK 端先按自定义分词器拆分重新组合成查询语句,发送到 xapian 解析器时由于不是 boolean prefix,因此它又会调用内部切词法再次切割。

简单解决可以将这类词,添加到 etc/rules.utf8.ini 中的 [specials] 中作为特殊词,如果词量比较大和不确定,那先用
XSSearch::addQueryTerm 来构造搜索语句。

或者等下一个版本,考虑给 xapian 打个补丁,对于某些自定义分词器的字段不再调用内部分词。
查找这个用户的全部帖子
引用并回复
2013年06月18日, 11:32 (这个帖子最后修改于: 2013年06月18日 11:34 by hpxl.)
RE: small50,big161这种词汇搜索不到
PHP 代码:
[cid]
index self
tokenizer 
split(,)
non_bool yes 

字段设置如上,解决方法如下。
PHP 代码:
foreach ($keywords as $v) {
  
$search->addQueryTerm($field$v);


Hello world!
查找这个用户的全部帖子
引用并回复
发表回复 


论坛跳转:


正在浏览该主题的用户: 1 个游客