sphinx搜索引擎中文返回设置

william_cr7 2017-10-23 03:55:35
搜索后返回uname是中文的,该如何在sphinx.conf配置,才能显示uname
1. id=9, weight=1, uname=(unknown-attr-type=7), ucreatedate=Fri Oct 13 15:27:28 CST 2017
2. id=199, weight=1, uname=(unknown-attr-type=7), ucreatedate=Thu Sep 28 10:09:35 CST 2017


下面是我的配置文件

#
# Sphinx configuration file sample
#
# WARNING! While this sample file mentions all available options,
# it contains (very) short helper descriptions only. Please refer to
# doc/sphinx.html for details.
#

#############################################################################
## data source definition
#############################################################################

source src1
{

type = mysql

sql_host = localhost
sql_user = root
sql_pass = root
sql_db = test
sql_port = 3306 # optional, default is 3306

# sql_sock = /tmp/mysql.sock

sql_query_pre = SET NAMES utf8
# 关闭缓存
sql_query_pre = SET SESSION query_cache_type=OFF

sql_query = SELECT uuserid,uuserid as userid1,ULOGINNAME,uname,UUSERTYPE,USEX,UMOBILE,UCARDTYPE FROM xt_userinfo

## 有的时候有多个表,我们想要查询的字段在其他表中。这个时候就需要对sql_query进行join操作。
## 而这个join操作可能非常慢,导致建立索引的时候特别慢,那么这个时候,就可以考虑在sphinx端进行join操作了。
## sql_joined_field是增加一个字段,这个字段是从其他表查询中查询出来的。
## 这里封号后面的查询语句是有要求的,如果是query,则返回id和查询字段,如果是payload-query,则返回id,查询字段和权重。
# sql_joined_field = tags from query; SELECT docid, CONCAT('tag',tagid) FROM tags ORDER BY docid ASC
# sql_joined_field = wtags from payload-query; SELECT docid, tag, tagweight FROM tags ORDER BY docid ASC

# sql_file_field = content_file_path

# sql_query = \
# SELECT doc.id, doc.id AS group, doc.title, doc.data \
# FROM documents doc \
# WHERE id>=$start AND id<=$end
## 当数据源数据太大的时候,一个sql语句查询下来往往很有可能锁表等操作。
## 那么我么就可以使用多次查询,那么这个多次查询就需要有个范围和步长,sql_query_range和sql_range_step就是做这个使用的
# 分区查询设置
# sql_query_range = SELECT MIN(id),MAX(id) FROM documents

## 获取最大和最小的id,然后根据步长来获取数据。比如下面的例子,如果有4500条数据,这个表建立索引的时候就会进行5次sql查询。
## 而5次sql查询每次的间隔时间是使用sql_ranged_rhrottle来进行设置的。单位是毫秒。
# range query step
# optional, default is 1024
# 分区查询的步长
# sql_range_step = 1000

# sql_attr_uint和sql_attr_timestamp用于定义用于api过滤或者排序
# 整型
sql_attr_uint = UUSERTYPE
sql_attr_uint = USEX

# sql_query_info_pre = SET NAMES utf8


# 时间戳
# sql_attr_timestamp = ucreatedate

# sql_attr_bool = is_deleted

# 长整型属性
# sql_attr_bigint = my_bigint_id

# 排序字段
# sql_attr_timestamp = date_added
# 用于命令界面端(CLI)调用的测试(一般来说不需要)
sql_query_info = SELECT UUSERID,ULOGINNAME,uname,UUSERTYPE,USEX,UMOBILE,UCARDTYPE,UNIX_TIMESTAMP(UCREATEDATE) as ucreatedate FROM xt_news WHERE searchid=$id

# 浮点型
# sql_attr_float = lat_radians

# 多值属性(MVA)
# 试想一下,有一个文章系统,每篇文章都有多个标签,这个文章就叫做多值属性。
# 我要对某个标签进行查询过滤,那么在建立查询的时候就应该把这个标签的值放入到索引中。
# 这个字段,sql_attr_multi就是用来做这个事情的
# sql_attr_multi = uint tag from query; SELECT docid, tagid FROM tags
# sql_attr_multi = uint tag from ranged-query; \
# SELECT docid, tagid FROM tags WHERE id>=$start AND id<=$end; \
# SELECT MIN(docid), MAX(docid) FROM tags

# 字符串属性。
# sql_attr_string = ULOGINNAME
sql_attr_string = UNAME
# sql_attr_string = USEX

# sql_field_string = ULOGINNAME


# 在sql_query执行后立即操作,sql_query_post是在sql_query执行后执行,而sql_query_post_index是在索引建立完成后才执行。
# sql_query_post =

# sql_query_post_index = REPLACE INTO counters ( id, val ) \
# VALUES ( 'max_indexed_id', $maxid )

# 分步查询时间间隔(毫秒)
# sql_ranged_throttle = 0

# sql_query_killlist = SELECT id FROM documents WHERE edited>=@last_reindex

}

# 主数据源索引
index test1
{
# 索引类型,包括有plain,distributed和rt。分别是普通索引/分布式索引/增量索引。默认是plain。
# type = plain

# 索引数据源
source = src1

## 索引文件存放路径
path = D:/sphinx/data/test1

#添加utf-8编码表
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F

docinfo = extern

dict = keywords

mlock = 0

morphology = none

min_word_len = 1

# charset_type = zh_cn.utf-8

# expand_keywords = 1

# 简单分词,只支持0 和1 ,如果要搜索中文,请指定为1
ngram_len = 1

# 需要分词的字符,如果要搜索中文,去掉前面的注释
ngram_chars = U+3000..U+2FA1F

html_strip = 0

}


index rt
{
type = rt
path = D:/sphinx/data/rt

rt_field = uname
rt_attr_uint = uusertype

}

indexer
{
## 内存大小限制 默认是 128M
# memory limit, in bytes, kiloytes (16384K) or megabytes (256M)
# optional, default is 128M, max is 2047M, recommended is 256M to 1024M
mem_limit = 128M

}

searchd
{

listen = 9312
listen = 9306:mysql41

# 服务进程日志存放路径,一旦sphinx出现异常,基本上可以从这里查询有效信息
log = D:/sphinx/log/searchd.log

# 客户端查询日志 尤为有用 它将在运行时显示每次搜索并显示结果
query_log = D:/sphinx/log/query.log

# 请求超时
read_timeout = 5

client_timeout = 300

# 同时可执行的最大searchd 进程数
max_children = 30

persistent_connections_limit = 30

# 进程ID文件
pid_file = D:/sphinx/log/searchd.pid

# windows下启动searchd服务一定要注释掉这个 是否支持无缝切换,做增量索引时通常需要(0/1)
# seamless_rotate = 1

# 在启动运行时是否提前加载所有索引文件
preopen_indexes = 1

# 是否释放旧的索引文件 1 不释放 0 释放
unlink_old = 1

# attr_flush_period = 900

# MVA跟新池大小(默认为1M)
mva_updates_pool = 1M

# 最大允许的网络包大小(默认8M)
max_packet_size = 8M

# 每个查询最大允许的过滤器数量(默认256)
max_filters = 256

#每个过滤器最大允许的值的个数(默认4096)
max_filter_values = 4096

# listen_backlog = 5

# read_buffer = 256K

# read_unhinted = 32K

# 每个组的最大查询数(默认为32)
max_batch_queries = 32

workers = threads # for RT to work

}


common
{

# lemmatizer_base = /usr/local/share/sphinx/dicts

# on_json_attr_error = fail_index

# json_autoconv_numbers = 1

# json_autoconv_keynames = lowercase

# rlp_root = /usr/local/share/sphinx/rlp

# rlp_environment = /usr/local/share/sphinx/rlp/rlp/etc/rlp-environment.xml

# rlp_max_batch_size = 100k

# rlp_max_batch_docs = 100


# plugin_dir = /usr/local/sphinx/lib

}


...全文
673 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,760

社区成员

发帖
与我相关
我的任务
社区描述
搜索引擎的服务器通过网络搜索软件或网络登录等方式,将Internet上大量网站的页面信息收集到本地,经过加工处理建立信息数据库和索引数据库。
社区管理员
  • 搜索引擎技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧