Sphinx搜索 - 数字和字母数字搜索没有返回结果

时间:2013-12-27 14:25:31

标签: php sphinx keyword numeric alphanumeric

我正在尝试使用sphinx搜索为我正在处理的Web应用程序提供关键字搜索功能。

我已经尝试了一切来使数字和字母数字搜索工作,但没有找到运气! (尝试使用charset_table,index_exact_words,infix,substring配置sphinx.conf。)

这是sphinx.conf文件设置:

source src1 : base_src
{
    sql_query          = SELECT CRC32(string_field1) AS id, 1 AS table_id, \
       string_field1, string_field2, string_field3, string_field4, string_field5 \
       FROM table1
    sql_query_info     = SELECT * FROM table1 WHERE CRC32(string_field1)=$id
    sql_attr_uint      = table_id
    sql_attr_string    = string_field1
}

index idx1
{
    morphology          = stem_en
    max_substring_len   = 0
    min_infix_len       = 1
    enable_star         = 1
    expand_keywords     = 1
    dict                = keywords
    mlock               = 0
    min_word_len        = 1
    charset_type        = utf-8
    charset_table       = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
    index_exact_words   = 1
    source              = src1
    path                = /home/{myUserName}/indices/idx1
}

此处 string_field1 是字母数字字符串。

实施例

string_field1 =“HMGC_GL0000047”

$ sphinx-> query('GL0','idx1');

$ sphinx-> query('047','idx1');

如何配置和使用sphinx + php使数字和字母数字搜索工作?

1 个答案:

答案 0 :(得分:1)

您已将 string_field1 定义为sql_attr_string的属性。

因为它是Attribute,所以它不是全文索引的。因此它永远不会匹配搜索中的任何关键字。

另一方面,

Fields被编入索引,并且会匹配。任何未定义为属性的内容,绝不是sql_query中的第一列,但其他所有内容都是字段。

如果你真的不希望它作为属性工作,那么可以删除sql_attr_string。或者可以使用sql_field_string,使列BOTH成为字段和属性。将string_field1定义为feild之后,它应该与您的查询匹配。