首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sphinx查询列出来自内部单词的结果

Sphinx查询列出来自内部单词的结果
EN

Stack Overflow用户
提问于 2012-11-11 18:03:51
回答 2查看 219关注 0票数 0

我正在尝试编写一个狮身人面像查询,以列出以某个关键字开头的域。

假设我有一个包含以下项的sphinx索引。

代码语言:javascript
复制
stack.com
stack-it.com
stack.net
stack-studio.com
stackoverflow.com
stackmonkey.com

以下查询

代码语言:javascript
复制
$cl->SetMatchMode ( SPH_MATCH_EXTENDED2 );
$cl->SetFieldWeights ( array ( "site_domain"=>100 ) );
$cl->SetSortMode ( SPH_SORT_EXTENDED  , "@weight DESC" );
$cl->SetLimits(0, 100);
$cl->AddQuery( '^stack', "domainsDb" );

将仅列出:

代码语言:javascript
复制
stack.com
stack-it.com
stack.net
stack-studio.com

当它找到以.或者-。但是stackoverflow.com没有显示,因为我猜它不是完全匹配的?如何才能显示以'query‘开头的所有结果?即使它是一个单词的一部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-11 21:09:58

您应该启用星号选项(http://sphinxsearch.com/docs/1.10/conf-enable-star.html),并在要查找的关键字后添加*:

$cl->AddQuery( '^stack*,"domainsDb“);

另外,不要忘记设置最小中缀长度(http://sphinxsearch.com/docs/1.10/conf-min-infix-len.html)

使用MySQL进行全文搜索并不是一个真正推荐的想法。

1)与sphinx/solr相比,使用FT索引的全文搜索速度较慢

2)没有FT索引的全文搜索非常非常慢,可以非常随意地利用100%的数据库服务器,即使在非常非常低的流量下也无法使用

3)为了能够建立FT索引,你必须使用MyISAM引擎,而不是Innodb,从另一方面来说,Innodb本身也有一些缺点

票数 2
EN

Stack Overflow用户

发布于 2012-11-11 18:31:50

我发现在这种情况下不需要Sphinx。

对于在VARCHAR字段上运行这样的查询,仅MySQL就足够快了。

代码语言:javascript
复制
SELECT * FROM domain WHERE domain LIKE '$search_term%'

运行速度非常快,即使在超过一百万条记录上也是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13330141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档