Php 如何使用sphinx进行短语搜索
我需要使用sphinx创建短语搜索。我使用这个配置文件创建了索引Php 如何使用sphinx进行短语搜索,php,mysql,search,sphinx,Php,Mysql,Search,Sphinx,我需要使用sphinx创建短语搜索。我使用这个配置文件创建了索引 source sphinx_search { type = mysql # some straightforward parameters for SQL source types sql_host = localhost sql_user
source sphinx_search
{
type = mysql
# some straightforward parameters for SQL source types
sql_host = localhost
sql_user = root
sql_pass = root
sql_db = mydatabase
sql_port = 3306
sql_query = \
SELECT userId, usertype_id, searchdata from tbl_user;
#sql_attr_uint = userId
sql_attr_uint = usertype_id
#document info query, ONLY for CLI search (ie. testing and debugging)
#optional, default is empty
#must contain $id macro and must fetch the document by that id
sql_query_info = SELECT * FROM tbl_user WHERE userId=$id;
}
index sphinx_search {
source = sphinx_search
path = /var/lib/sphinx/sphinx_search
morphology = stem_en
min_stemming_len = 4
stopwords = /var/data/sphinx/stopwords.txt
min_word_len = 3
min_prefix_len = 3
min_infix_len = 0
enable_star = 1
phrase_boundary = ., ?, !, U+2026 # horizontal ellipsis
phrase_boundary_step = 100
html_strip = 1
}
indexer {
mem_limit = 256M
#mem_limit = 128M
max_xmlpipe2_field = 16M
}
searchd {
compat_sphinxql_magics = 0
listen = 9312
listen = 9306:mysql41
log = /var/log/sphinx/searchd.log
query_log = /var/log/sphinx/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinx/searchd.pid
max_matches = 10000
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = /var/data/
}
如果我试图寻找“水污染”这个词
搜索结果如下所示
words:
1. 'water': 10554 documents, 37143 hits
2. 'pollut': 1902 documents, 9657 hits
第一个问题是它没有完全使用“污染”这个词,而是使用了“污染”
第二个问题是它没有搜索完整的单词。即使我搜索
“水污染”
像这样
第三个问题,我无法使用userId对结果进行排序。如果我尝试添加
sql\u attr\u uint=userId
它的索引不正确
任何机构都可以帮助我解决这些问题。请帮助我。简而言之,您必须设置扩展匹配模式并使用:
请注意搜索词周围的双引号。请显示搜索请求的代码。
$cl->SetMatchMode ( SPH_MATCH_EXTENDED );
$cl->Query ( '"Water pollution"' );