标签: full-text-search

我是否可以通过编程方式配置PostgreSQL以消除全文搜索中的停用词?

我正在使用PostgreSQL全文搜索一个项目,其中传统的停止词('a','the','if'等)应该被索引和搜索,这不是默认行为.例如,我可能希望我的用户找到查询的结果"是或不是".

文件表明,我可以通过创建一个空的禁用词词典做到这一点$SHAREDIR/tsearch_data/english.stop(例如),但这将部署复杂化; 我希望能够使用SQL配置PostgreSQL的停止字处理.这可能吗?如果是这样,您能提供示例SQL语句吗?

postgresql full-text-search

35
推荐指数
1
解决办法
6892
查看次数

将SQL Server的CONTAINS()导入为模型定义的函数

我试图在我的Entity Framework模型中导入SQL Server的CONTAINS()函数,以便我可以在我的LINQ查询中使用它.

我已将此添加到我的EDM中:

<Function Name="FullTextSearch" ReturnType="Edm.Boolean">
    <Parameter Name="Filter" Type="Edm.String" />
    <DefiningExpression>
        CONTAINS(*, Filter)
    </DefiningExpression>
</Function>
Run Code Online (Sandbox Code Playgroud)

添加创建我的方法存根:

[EdmFunction("MyModelNamespace", "FullTextSearch")]
public static bool FullTextSearch(string filter)
{
    throw new NotSupportedException("This function is only for L2E query.");
}
Run Code Online (Sandbox Code Playgroud)

我试着像这样调用函数:

from product in Products
where MyModel.FullTextSearch("FORMSOF(INFLECTIONAL, robe)")
select product
Run Code Online (Sandbox Code Playgroud)

引发以下异常:

The query syntax is not valid. Near term '*'
Run Code Online (Sandbox Code Playgroud)

我意识到我定义的函数没有直接链接到被查询的实体集,所以这也可能是一个问题.

有什么办法可以解决这个问题吗?

sql-server full-text-search entity-framework entity-framework-4.1

35
推荐指数
1
解决办法
1740
查看次数

在PostgreSQL上创建非强制扩展时出错

我正在尝试将PostgreSQL配置为在我的rails应用程序中使用全文搜索,如此Railscast中所述.

我正在使用与with一起Ubuntu 12.04运行PostgreSQL 9.1.5安装的新服务器.apt-getppa:pitti/postgresqlprecise

尝试运行迁移时,当我在psql控制台中使用peer postgres用户尝试相同的命令时,我收到以下错误:

postgres=# CREATE EXTENSION unaccent;
Run Code Online (Sandbox Code Playgroud)

错误:无法打开扩展控制文件"/usr/share/postgresql/9.1/extension/unaccent.control":
没有这样的文件或目录

在我的本地框运行中,Ubuntu 10.04 desktop我使用相同的存储库(natty),它运行良好.

任何见解将不胜感激.

postgresql full-text-search unaccent rails-postgresql postgresql-9.1

35
推荐指数
2
解决办法
2万
查看次数

PostgreSQL(全文搜索)与 ElasticSearch

嗨,在将搜索功能应用到我的服务中之前,我正在做一些研究。我目前使用 PostgreSQL 作为我的主要存储。我绝对可以使用 PostgreSQL 的内置全文搜索,但问题是我的数据分散在几个表中。

我的服务是一个电子商务网站。因此,如果客户搜索“好苹果笔记本电脑”,我需要连接Brand表、post表和review表(1 个帖子是多个评论 + 简短摘要的组合)以完全搜索所有帖子。如果我使用 elasticsearch,我可以通过预处理插入完整的帖子。

根据我的研究,有人说 PostgreSQL 的 FTS 和 elasticsearch 性能相似,有人说 elasticsearch 更快。对于我的情况,哪个是更好的解决方案?

提前致谢

postgresql full-text-search elasticsearch

35
推荐指数
3
解决办法
2万
查看次数

Rails 3全文搜索选项(宝石,插件等)

我想知道是否有关于如何在Rails 3应用程序中进行全文搜索的最佳建议?思考Sphinx和acts_as_ferret尚未针对Rails 3进行更新,甚至像Searchlogic这样的基本activerecord搜索助手也不存在.

有什么想法吗?您是否使用已更新到Rails 3的上述宝石的任何分叉版本?

full-text-search ruby-on-rails ruby-on-rails-3

32
推荐指数
3
解决办法
1万
查看次数

如何在MySQL中搜索多个列?

我正在尝试创建一个搜索功能,搜索多个列以查找基于关键字的匹配项.这个查询:

SELECT title FROM pages LIKE %$query%;
Run Code Online (Sandbox Code Playgroud)

仅用于搜索一列,我注意到用逗号分隔列名会导致错误.那么有可能在mysql中搜索多个列吗?

mysql sql full-text-search

31
推荐指数
5
解决办法
9万
查看次数

Django的搜索引擎解决方案实际上有效吗?

到目前为止的故事:

决定使用Xapian作为搜索后端,因为它具有我正在寻找的所有搜索引擎功能,了解Unicode,干扰,具有很少的依赖性,并且不需要在其上安装膨胀的应用服务器.

尝试过Django和Haystack(再加上xapian-haystack,将Haystack与Xapian联系在一起的后端粘合代码),因为它在很多博客上被宣传为"正常工作".不工作.django-haystack和xapian-haystack项目都没有提供实际协同工作的版本组合.两个项目的MASTER从Xapian产生错误,所以它根本不稳定.Haystack 1.0.1和xapian-haystack 1.0.x/1.1.0不兼容API.另外,在Haystack 1.0.1和xapian-haystack MASTER的最低工作安装中,由于django-haystack或xapian-haystack中的错误,任何复杂查询都会产生零结果(我对此进行了双重验证),可能是因为单元测试实际上测试非常简单的情况,根本没有边缘情况.

试过Djapian.源代码充满了拼写错误(请注意,变量名称,而不是注释),文档也充满了模糊和过时的信息,永远不会导致工作安装.毫不奇怪,用户很少要求功能,但如何让它首先工作.

下一篇文章:探索Solr(安装Java环境加上Tomcat让我感到头疼,机器受RAM和CPU约束)或Lucene(稍微不那么头疼,但仍然如此).

在我继续花费更多时间使用可能会或可能不如宣传的解决方案之前,我想知道:有没有人在Django中获得实际的,真实的搜索解决方案?我是认真的.我发现阅读"大部分问题大部分都解决了",然后意识到你永远不会从源代码中获得有效的安装,这真是令人沮丧,因为实际上,处理那些"主要解决问题"的所有博客都没有超过基本安装和复制粘贴官方教程.

所以这是要求:

  • 必须能够在一个查询中搜索10-100个术语
  • 必须处理+(术语必须存在)和 - (术语不得存在),和/或
  • 必须处理任意分组(即AND/OR周围的括号)
  • 必须允许在全文搜索之前或之后进行Django-ORM过滤(即使用Django知道的全套过滤器对结果进行预处理/后处理)
  • 或者,必须有一个工具来批量获取结果集并将其转换为QuerySet
  • 应该在机器上很轻,所以最好没有大量的JVM和基于Java的app-server安装

那有什么可以做到的吗?我对轶事证据不感兴趣,或者对一些声称应该有效的博客文章的引用感兴趣.我想听听那些真实拥有全功能设置的人在现实世界中,在真实条件下,真实查询.

编辑:

让我再说一遍,我对轶事证据并不是那么感兴趣,因为有人在某个地方有一个运行不正常的安装工具.我已经去过那里,我阅读了所有的博客文章,邮件列表,我联系了作者,但是当涉及实际场景的实际实现时,没有任何像宣传的那样工作.

此外,考虑到任何项目的总体拥有成本,下面的用户也提到了这一点,我绝对没有兴趣听到有人在一个供应商在未知数量的专家中跳伞的某个地方能够将其拉下来 - 使用特定的域知识对整个安装进行修补,这些知识无法记录.

所以,如果您声称您的工作安装实际上满足了全面搜索的最低要求(请参阅上述要求),请提供以下信息,以便我们都能从Django的搜索解决方案中获益,从而真正解决问题:

  • 确切的Linux发行版,发行版,
  • Haystack(或同等版本)的确切发布版本以及搜索后端的发布版本,
  • 搜索引擎的确切发布版本
  • 公开(!)可用文档如何完全按照安装设置的方式设置所有组件,以满足上述最低要求.

谢谢.

django search full-text-search search-engine xapian

30
推荐指数
4
解决办法
4626
查看次数

SQL全文搜索vs"LIKE"

假设我有一个相当简单的应用程序,允许用户在他们拥有的DVD上存储信息(标题,演员,年份,描述等),我想允许用户通过任何这些领域搜索他们的收藏(例如"基努·里维斯")或"矩阵"将是有效的搜索查询).

使用SQL全文搜索与简单地用空格分割查询并在SQL语句中执行一些"LIKE"子句有什么好处?它只是表现更好还是实际上会返回更准确的结果?

sql database full-text-search

29
推荐指数
4
解决办法
2万
查看次数

在Oracle存储过程中搜索文本

我需要使用TOAD搜索Oracle数据库中的所有存储过程.我正在寻找开发人员在序列上使用MAX + 1而不是NEXTVAL来获取下一个ID号的任何地方.

我一直在做SQL Server多年,并且知道有几种方法可以做到这一点,但没有人在这里帮助我.

我试过用了

SELECT * FROM user_source
WHERE UPPER(text) LIKE '%blah%'
Run Code Online (Sandbox Code Playgroud)

返回结果,但仅针对我的默认架构,而不是我需要搜索的架构.

我也尝试了以下但它只是错误

SELECT * FROM SchemaName.user_source
WHERE UPPER(text) LIKE '%blah%'
Run Code Online (Sandbox Code Playgroud)

sql oracle toad full-text-search stored-procedures

29
推荐指数
1
解决办法
12万
查看次数

PHP mysql使用关键字搜索多个表

我的数据库中有三个表:

messages
topics
comments
Run Code Online (Sandbox Code Playgroud)

这些表中的每一个都有两个名为"content"和"title"的字段.我希望能够在我的sql语句中使用'Like'来查看'messages.content','messages.title','topics.content','topics.title','comments.content'和'comments.标题'使用关键字.

到目前为止,我的查询只能从一个表中查找结果:

mysql_query("SELECT * FROM messages 
WHERE content LIKE '%" . $keyword . "%' 
OR title LIKE '%" . $keyword ."%'");
Run Code Online (Sandbox Code Playgroud)

我也想知道,一旦我从多个表中得到结果,我怎么能从哪个表中判断出结果是什么?

任何帮助将不胜感激!

php mysql full-text-search

28
推荐指数
2
解决办法
7万
查看次数