我正在尝试使用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使数字和字母数字搜索工作?
答案 0 :(得分:1)
您已将 string_field1 定义为sql_attr_string
的属性。
因为它是Attribute
,所以它不是全文索引的。因此它永远不会匹配搜索中的任何关键字。
Fields
被编入索引,并且会匹配。任何未定义为属性的内容,绝不是sql_query
中的第一列,但其他所有内容都是字段。
如果你真的不希望它作为属性工作,那么可以删除sql_attr_string。或者可以使用sql_field_string,使列BOTH成为字段和属性。将string_field1定义为feild之后,它应该与您的查询匹配。