问题标签 [full-text-indexing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1983 浏览

sql-server-2008 - SQL SERVER FULL-TEXT INDEX,CONTAINS 返回空

我有一个关于完整索引的问题,任何机构都可以帮助我吗?

1) 设置全文索引

2) 使用 CONTAINS 查找匹配的行

3) 一切顺利。只是返回空的结果集。而且我确信 Table Company 中有公司名称为“Microsoft”的公司

如果有人帮我这个忙,我将不胜感激。

0 投票
2 回答
595 浏览

sql-server - 将 Lucene 或任何其他搜索产品与 SQL Server 2005 集成

我需要在 SQL Server 2005 中使用全文搜索,并且我已经探索了它的内置搜索方法(SQL Server 全文索引),但它似乎没有那么强大。

我还查看了 Lucene 的功能。

现在我的问题是:是否可以集成 Lucene 和 SQL 服务器?

  1. 我的 T-SQL 查询可以使用 Lucene 索引来返回结果吗?(可能在内部使用基于 CLR 的函数)
  2. 如何在表中的数据更新时更新 Lucene 索引
  3. 什么可以是整体架构?
  4. 是否有任何商业产品可以提供这种支持?

谢谢,HB

0 投票
4 回答
1182 浏览

sql-server - 如何使用 CONTAINS 添加更多 OR 搜索将查询带入抓取?

我有一个简单的查询,它依赖于两个全文索引表,但是当我将CONTAINS与任何其他OR搜索结合使用时,它的运行速度非常慢。从执行计划中可以看出,两次全文搜索压垮了性能。如果我只使用 1 个 CONTAINS 进行查询,或者两者都不查询,则查询是亚秒级的,但是当您将OR添加到组合中时,查询将变得命运多舛。

这两张表没有什么特别之处,它们并不太宽(一张有 42 列,另一张有 21 列;每个列中可能有 10 列被 FT 索引),甚至包含非常多的记录(两者中最大的有 36k 条记录)。

我能够通过将两个CONTAINS搜索拆分为它们自己的SELECT查询然后将这三个合并在一起来解决性能问题。这个 UNION 解决方法是我唯一的希望吗?

执行计划:

执行计划

0 投票
5 回答
2248 浏览

sql-server - 告诉我 SQL Server 全文搜索器疯了,不是我

我有一些客户具有用户正在搜索的特定地址:

123 通用方式

数据库中有 5 行匹配:


我运行 FT 查询来查找这些行。当我向搜索添加更多条件时,我将向您展示每个步骤:

好的,到目前为止一切顺利,现在添加“通用”一词:

优秀的。现在我将添加用户想要确保存在的最终关键字:

嗯?没有行?如果我只查询“way*”怎么办:

起初我认为可能是因为*, 并且它要求根way后面有更多字符。但这不是真的:

  • 搜索“123*”匹配“123”
  • 搜索“generic*”匹配“generic”
  • 在线书籍说,星号匹配零个、一个或多个字符

如果我删除*just for s&g 怎么办:


因此,有人可能会认为您甚至不允许单独或作为根进行搜索。way但这也不是真的:


综上所述,用户正在搜索包含所有单词的行:

123 通用方式

我正确地翻译成WHERE条款:

它不返回任何行。告诉我这行不通,这不是我的错,而且 SQL Server 很疯狂。

注意:我已经清空了 FT 索引并重建了它。

更新一

更新二

假装用户输入:

第 123 章

真正的问题是用户正在输入完全有效的内容,他们希望看到任何人都希望看到的内容。


更新三

有人要求这一切,这不是我的错!:

这是不相信我的人的屏幕截图:

应该有效但无效的查询:

在此处输入图像描述

有效但无用的查询:

在此处输入图像描述

有效但无用的查询,带有证明内容:

在此处输入图像描述


更新四

查询不能写成

因为有些项目在逻辑上或物理上没有被 FT 索引覆盖。例如,用户查询:

6/4/2010 伊恩博伊德 619

提出四个关键词:

  • 2010 年 6 月 4 日
  • 伊恩
  • 博伊德
  • 619

这意味着他们希望所有条件都成立,伪代码为:

这被翻译成部分查询:

其中一位回答者正在查看原始问题中提供的简化示例;不是现实世界。要说有多个从句是不正确的,那是不正确的。AND

0 投票
2 回答
497 浏览

php - FULLTEXT 搜索(Mysql)第一次很慢,然后从第二次开始它变得更快

我有一个包含 4000 条记录的表(通过全文搜索更容易处理)。当第一次执行搜索查询时,速度要慢得多。大约需要 5 到 10 秒。然后它变得更快。如果站点在 10 或 15 分钟内保持非活动状态,并且当我尝试再次执行查询时,它会变慢。

我正在使用 mysql+PHP。我想这是缓存问题。我们的网站托管在我无法访问缓存的第三方服务器中。

我的问题有什么解决方法吗。

提前致谢!

编辑:

你好,谢谢你的回复。这是我的查询。

从 PRODUCT_2_CATEGORY、PRODUCT、MERCHANT 中选择 PRODUCT_2_CATEGORY.PRODUCT_ID,其中 PRODUCT_2_CATEGORY.PRODUCT_ID = PRODUCT.ID AND PRODUCT.PRO_STATUS='active' AND PRODUCT.MERCHANT_ID = MERCHANT.ID AND MERCHANT.M_STATUS='active' AND (CAT_ID='1' OR CAT_ID='1004' OR CAT_ID='1005' OR CAT_ID='1006' OR CAT_ID='1007' OR CAT_ID='1008' OR CAT_ID='1002' OR CAT_ID='1003' OR CAT_ID='45' OR CAT_ID= '46' 或 CAT_ID='74' 或 CAT_ID='75' 或 CAT_ID='76' 或 CAT_ID='49' 或 CAT_ID='50' 或 CAT_ID='77' 或 CAT_ID='78' 或 CAT_ID='79 ' OR CAT_ID='80' OR CAT_ID='81' OR CAT_ID='82' OR CAT_ID='83' OR CAT_ID='84' OR CAT_ID='47' OR CAT_ID='89' OR CAT_ID='51'或 CAT_ID='52' 或 CAT_ID='88' 或 CAT_ID='87' 或 CAT_ID='86' 或 CAT_ID='85' 或 CAT_ID='48' 或 CAT_ID='53' 或 CAT_ID='54' 或 CAT_ID ='90' OR CAT_ID='200' OR CAT_ID='91' OR CAT_ID='92' OR CAT_ID='93' OR CAT_ID='94' OR CAT_ID='11' OR CAT_ID='95' OR CAT_ID=' 98' 或 CAT_ID='99' 或 CAT_ID='100' 或 CAT_ID='101' 或 CAT_ID='96' 或 CAT_ID='102' 或 CAT_ID='103' 或 CAT_ID='104' 或 CAT_ID='105' OR CAT_ID='106' OR CAT_ID='97' OR CAT_ID='107' OR CAT_ID='108' OR CAT_ID='109' OR CAT_ID='110' OR CAT_ID='114' OR CAT_ID='119' OR CAT_ID ='120' 或 CAT_ID='121' 或 CAT_ID='115'OR CAT_ID='122' OR CAT_ID='123' OR CAT_ID='124' OR CAT_ID='125' OR CAT_ID='116' OR CAT_ID='127' OR CAT_ID='128' OR CAT_ID='129' OR CAT_ID ='117' OR CAT_ID='130' OR CAT_ID='131' OR CAT_ID='118' OR CAT_ID='111' OR CAT_ID='132' OR CAT_ID='136' OR CAT_ID='137' OR CAT_ID=' 138' 或 CAT_ID='139' 或 CAT_ID='140' 或 CAT_ID='133' 或 CAT_ID='141' 或 CAT_ID='142' 或 CAT_ID='143' 或 CAT_ID='144' 或 CAT_ID='145'或 CAT_ID='146' 或 CAT_ID='134' 或 CAT_ID='147' 或 CAT_ID='148' 或 CAT_ID='149' 或 CAT_ID='150' 或 CAT_ID='151' 或 CAT_ID='135' 或 CAT_ID ='152' 或 CAT_ID='153' 或 CAT_ID='154' 或 CAT_ID='155' 或 CAT_ID='156' 或 CAT_ID='64' 或 CAT_ID='158' 或 CAT_ID='70' 或 CAT_ID='164' 或 CAT_ID='71' 或 CAT_ID='165'或 CAT_ID='159' 或 CAT_ID='166' 或 CAT_ID='167' 或 CAT_ID='168' 或 CAT_ID='169' 或 CAT_ID='160' 或 CAT_ID='73' 或 CAT_ID='170' 或 CAT_ID ='172' OR CAT_ID='173' OR CAT_ID='174' OR CAT_ID='161' OR CAT_ID='175' OR CAT_ID='176' OR CAT_ID='177' OR CAT_ID='178' OR CAT_ID=' 162' 或 CAT_ID='179' 或 CAT_ID='180' 或 CAT_ID='181' 或 CAT_ID='182' 或 CAT_ID='183' 或 CAT_ID='163' 或 CAT_ID='184' 或 CAT_ID='192'或 CAT_ID='191' 或 CAT_ID='190' 或 CAT_ID='189' 或 CAT_ID='188' 或 CAT_ID='187' 或 CAT_ID='186' 或 CAT_ID='185' 或 CAT_ID='193' 或 CAT_ID='112' 或 CAT_ID='113' 或 CAT_ID='65' OR CAT_ID='66' OR CAT_ID='67' OR CAT_ID='68' OR CAT_ID='69') AND MATCH(PRODUCT.TITLE) AGAINST('shirt' IN BOOLEAN MODE) ORDER BY PRODUCT.TITLE ASC LIMIT 0, 12

我们的网站托管在第三方网络服务器(Plesk 控制面板)上。所以,我不确定是否可以安装其他软件。

我们的网站是 2010.shoppingstrip.com.au。当您搜索某些内容时,将执行此查询。

谢谢

0 投票
1 回答
1661 浏览

search - SOLR 中的 EdgeNGramTokenizerFactory EdgeNGramFilterFactory 有什么区别?

这两个过滤器有什么区别?它们似乎具有相同的效果?

谁能提供一个如何将它们应用于某些文本的示例?

0 投票
1 回答
384 浏览

mysql - MySQL全文查询锁定表

每隔一段时间,我们就会在 MySQL 中得到一个运行时间特别长的全文查询。该查询将运行很长时间,目前我看到一个运行了 50,000 秒(并且仍在运行)的查询。对查询使用 Kill 或 Kill Query 似乎无济于事。另外,客户端的命令超时时间是30秒,所以客户端已经失败了,离开了,但是服务器一直在运行查询,消耗了相当多的资源。过去,我们必须重新启动 MySQL 服务才能让此类查询停止运行。有没有其他方法可以阻止这些查询。我们正在采取措施确保查询不会首先运行,但它们仍然会每隔一段时间运行一次,这是一个很大的痛苦。主要是因为在查询运行时,我们无法对表执行更新。

一个长时间运行的查询的例子是这样的:

由于 * 在搜索字符串的中间以及字符串的末尾,因此运行时间特别长。

0 投票
3 回答
4365 浏览

java - 如何使用 Lucene 获取频繁出现的短语

我想用 Lucene 获得一些经常出现的短语。我从 TXT 文件中获取了一些信息,并且由于没有短语信息,例如“信息检索”被索引为两个单独的单词,我失去了很多上下文。

获得这样的短语的方法是什么?我在互联网上找不到任何有用的东西,感谢所有建议、链接、提示,尤其是示例!

编辑:我只按标题和内容存储我的文件:

因为对于我所做的最重要的是文件的内容。标题通常根本不是描述性的(例如,我有许多 PDF 学术论文的标题是代码或数字)。

我迫切需要从文本内容中索引出现最多的短语,刚才我看到这种简单的“词袋”方法效率不高。

0 投票
0 回答
229 浏览

sql-server-2005 - 全文索引多种语言

我的数据库以三种语言(英语、法语和阿拉伯语)存储内容 我为几个表启用了全文索引,并且想了解一些最佳实践:
1. 什么时候向我展示语言中性索引?
2. 我可以索引阿拉伯语吗?我在可索引语言中看不到阿拉伯语!
3. 我应该为每种语言设置单独的索引吗?(我的每个元组都有这三种语言)

欢迎任何想法和建议。

0 投票
2 回答
312 浏览

mysql - 与用于 Django 搜索的 Solr 相比,MyISAM 的扩展性如何?

想象一下,您有一个用 Django 和 Python 2.65 编写的 Web 应用程序,而 MySQL 5.1 是您选择的数据库。

现在,假设您需要扩展您的应用程序以处理搜索成千上万的文档,并且可能有成千上万的用户将使用它。

现实:在上述情况下,带有 PySolr 和 Solr 1.4.0 的 Haystack 1.0 被证明是缓慢的。MyISAM 是一个更可行的替代方案,还是我应该花更多时间以“更智能”的方式使用 Solr 处理我当前的配置?

建议?尖端?

感谢您的任何帮助!米肖