我正准备将基于Sphinx的搜索整合到网站中,但我发现没有内置的拼写纠正支持.
网上的人建议使用pspell或其他第三方库来完成工作,但问题是我要搜索的数据,主要包含"技术"术语,如品牌名称,因此我不认为常见的库将包括他们.
另一方面,Xapian表示根据索引的数据进行拼写纠正支持,这正是我想要的.是否值得使用Xapian?我仍然对我应该使用哪个全文搜索引擎感到困惑:Sphinx似乎相当不错,但缺少Xapian(或者Lucene?)的一些很酷的功能,而后者看起来像社区较少,文档较少.
我想我可以用pspell字典中没有的单词使用自定义单词解决问题,但是我不确定这是否会带来明显的性能损失?我将在一个非常受欢迎的网站上使用搜索系统进行聚光灯搜索(在输入的每个字母上通过ajax单独搜索),因此性能很重要.
理想情况下,我想让一些像品牌这样的领域比普通字典更优先,但我想这并不重要,因为大多数品牌名称与其他词汇截然不同.
关于自定义全文搜索引擎的一般设计的任何建议也是受欢迎的.
谢谢
我正在构建一个具有数百万条记录的数据库操作的系统.我在项目的所有部分都使用Zend Framework.我想使用搜索索引技术,但你对此有什么建议吗?我应该使用哪种技术?
提前致谢
我正在使用Sphinx Search.除了一个问题之外,它对我来说很好用:我需要排除某些特定字段不包含单词的条目.
在MySQL中看起来像这样的东西:
SELECT * FROM table
WHERE yescolumn = 'query'
AND othercolumn not like '%keyword%'
Run Code Online (Sandbox Code Playgroud) 剧透:
这只是另一个Lucene vs Sphinx对比什么,
我看到所有其他线程差不多两年了,所以决定重新开始..
这是要求:
数据大小:最大10 GB.
行:几乎数十亿的
索引应该是快速
搜索应该在0毫秒[好吧,开玩笑......笑......但保持尽可能低]
在今天的世界里,我/我该怎么做?
编辑:我在lucene上做了一些时间,并且为了索引1.8gb数据,花了5分钟.
搜索速度非常快,除非我做了*.a*需要400~500 ms.
我最担心的是索引,这需要loooonnnnggg时间,以及很多资源!!
我正在我的rails应用程序中实现sphinx搜索.
我想用模糊搜索.它应该搜索拼写错误,例如,如果输入搜索查询charact*a*ristics,它应该搜索charact*e*ristics.
我应该如何实现这一点
我有一个数据库表,其中包含来自Google Maps地理编码响应的地址.谷歌缩小所有方向(西 - > W,东 - > E等).
因此,如果我输入"100 West Pender Street"这样的地址,那么Google Maps返回的格式化地址就是"100 W Pender St",我将其插入到我的表格中.
现在,如果用户出现并搜索该地址,则以下所有内容应匹配:
pender street west pender street 100 pender 100 w pender 100 west pender
他们或多或少都这样做.然而,表中的"w"被忽略,因为它低于最小字长.落在东柏纳的地址在搜索结果中被赋予相同的权重("E"也被忽略).
处理这个问题的最佳方法是什么?
我怀疑将最小字长设置为1是"坏事".
我可以搜索并替换谷歌地址中的已知缩写(N,E,S,W,St,Ave,Dr等)并用它们的扩展替换它们 - 但是有一些街道名称,这不是有效(有些城市有单字母街道名称:J街等......)
此外,像"123 160 St"这样的地址根本无法搜索,因为街道号码(123)和街道名称(160)都低于最小字长.
MySQL FullText是正确的方法吗?Sphinx能提供更好的服务吗?
或者还有其他我尚未考虑的解决方案吗?请记住,用户的搜索查询不仅要匹配属性的地址,还要匹配其他文本列,例如属性名称和描述.
我想在Mac OS X Lion上安装最新稳定版的Sphinx(sphinxsearch.com).什么是正确的方法呢?
要求是我们有大量已保存的搜索,当新文档进入时,我们希望能够找到这些新文档匹配的已保存搜索,并能够实时通知创建者这些已保存的搜索.
在内置或作为插件的任何流行的免费软件搜索引擎和库中是否已经支持这样的东西?如果没有,那么以高效和可扩展的方式实现这一目标的最佳方式是什么?
我想一般的想法应该是将保存的搜索索引为它们是文档,并使用传入的文档作为查询来搜索它们.但我还没弄清楚到底该怎么做.
如果我们可以对受支持的查询运算符进行尽可能少的限制,那也是最好的.
提前致谢.
我正在尝试为我的MySQL服务器使用Sphinx全文搜索功能.我已经根据安装手册设置了本地Sphinx服务,并且可以进行文本搜索.
我可以连接到
mysql.exe --host=127.0.0.1 port=9306
Run Code Online (Sandbox Code Playgroud)
端口9306是sphinx.conf中配置的端口:
searchd {
...
listen = 9306:mysql41
...
}
Run Code Online (Sandbox Code Playgroud)
并做SphinxQL查询.我正在使用发行包附带的默认Sphinx示例数据库.
但是我想将Sphinx与我的MySQL服务器集成,这样连接到我的sql server的所有客户端都可以执行SphinxQL,我想用MySQL示例数据库sakila来试用它
我试图从SQL Server Management Studio连接到Sphinx作为链接服务器.我尝试了以下查询:
EXEC master.dbo.sp_addlinkedserver @server=N'SPHINX_SEARCH', @srvproduct=N'', @provider=N'MSDASQL', @provstr=N'Driver={MySQL ODBC 8.0 ANSI Driver};Server=127.0.0.1;Port=9306,charset=UTF8;User=;Password=;OPTION=3'
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SPHINX', @useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
GO
Run Code Online (Sandbox Code Playgroud)
我得到以下例外:
标题:Microsoft SQL Server Management Studio
与链接服务器的测试连接失败.
附加信息
链接服务器"SPHINX_SEARCH"的OLE DB提供程序"MSDASQL"报告错误.提供商未提供有关错误的任何信息.无法为链接服务器"SPHINX_SEARCH"初始化OLE DB提供程序"MSDASQL"的数据源对象.(Microsoft SQL Server,错误:7399).
从MySQL连接到Sphinx时,通过以下命令工作:
mysql -h 127.0.0.1 -P 9306
Run Code Online (Sandbox Code Playgroud)
有什么建议?
Sphinx版本:3.0.3,SQL Server版本:2014,MySQL版本:5.6