问题标签 [boolean-search]

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 投票
5 回答
9229 浏览

javascript - JavaScript 布尔搜索查询生成器接口库?

是否有任何(好/可用/不丑)JavaScript/接口库用于管理自定义布尔样式查询的创建,类似于 Google Analytics(分析)高级细分接口?

基本上,用于查询构建的动态接口可用于连接到后端的自定义查询构建器(在我的例子中是 MySQL,但它不必是特定于数据库的)。

我四处搜索,没有发现任何有用或有用的东西。

谷歌分析查询生成器

0 投票
0 回答
663 浏览

mysql - MySQL 匹配布尔模式搜索 - 撇号

我在布尔模式下使用匹配查询来创建搜索功能。搜索有效,并返回我期望的结果,除了其中带有撇号的单词存在一个问题。

如果在数据库中保存了一个带有撇号的单词(例如pirate's),并且您搜索带有撇号的单词,或者没有单词的结尾(例如pirate'spirate),它会返回结果,但是如果我搜索没有撇号(海盗)的单词,它不会返回任何结果。

我已经尝试将数据库中的记录更改为转义而不是转义,但我似乎找不到修复它的方法。

我也花了一段时间寻找类似的答案,但没有一个与此相同的问题,它们似乎更多的是返回不带撇号s 的搜索结果。

我的查询是:

0 投票
1 回答
1009 浏览

php - 是否有一个好的 PHP 库可用于将布尔搜索运算符解析为 MySQL 全文运算符?

我们已经使用 MySQL 全文搜索好几年了,但需求已经发生了变化。我们希望将 AND/OR/NOT 参数解析为 MySQL 能够理解的形式。我写了一个单元测试,很明显这很复杂。

我相信更多的人会遇到这个问题,所以我想一定有某种图书馆能够为我做到这一点。我试过谷歌,但不幸的是,我找不到这样的图书馆。有人知道好的吗?

该库应该能够处理引号、括号、AND/OR/NOT 运算符,在我们的例子中,它应该默认为 AND 而不是 OR(如果没有设置运算符)。以下是我的一些预期结果:

  • 'ict' 变成 '+ict'
  • 'ict it' 变成 '+ict +it'
  • 'ict OR it' 变成 'ict it'
  • '不是 ict' 变成 '-ict'
  • 'it NOT ict' 变成 '+it -ict'
  • 'web AND (ict OR it)' 变成 '+web +(ict it)'
  • 'ict OR (it AND web)' 变成 'ict (+it +web)'
  • 'ict NOT (ict AND it AND web)' 变成 '+ict -(+ict +it +web)'
  • 'php OR (NOT web NOT embedded ict OR it)' 变成 'php (-web -embedded ict it)'
  • '(web OR embedded) (ict OR it)' 变成 '+(web embedded) +(ict it)'
  • 开发 AND (web OR (ict AND php))' 变为 '+develop +(web (+ict +php))'
  • '"ict' 变成 '+"ict"'
  • '"ict OR it"'保持 '+"ict OR it"'

这是我们过去几年使用的功能(不能正常工作):

0 投票
1 回答
2151 浏览

php - PHP/MYSQL - 布尔全文搜索 - 精确字符串运算符 ("") 在准备好的语句与 SQL 查询中给出不同的结果集

我正在使用 PHP 准备语句在我的网站上制作高级搜索页面,以使用布尔全文搜索查询 MySQL 数据库 MyISAM 表。

它与 Google 提供的高级搜索的第一部分非常相似,涵盖以下条件:

  • 所有这些话
  • 确切的词或陈述(注意:这就是问题所在)
  • 这些词中的任何一个
  • 这些话都没有

我检索每个输入值,清理和处理字符串集合的每个部分,然后通过准备好的语句附加适当的信息以形成 mySQL 查询。

因此,本质上是以下搜索:

  • 全部 -
  • 精确的 -
  • 任意——希捷东芝
  • 没有任何 -

将输出为以下字符串:

查询将导致如下内容:

这将列出所有行,其中包含单词“seagate”后跟任何内容和“toshiba”后跟描述字段中的任何内容。

这很好用,输出如下:

这将列出上述所有行,但排除描述字段中包含“750gb”和“320gb”的任何行。

通过向“所有这些单词”字符串添加一个值,我们将获得以下输出:

这将列出上述所有行,但仅显示描述字段中同时包含“16mb”和“7200rpm”的下降。

现在是有问题的部分。如果我要使用“Exact word of statement”字符串并添加值“serial ata 600”,我们将得到以下输出:

使用 phpmyadmin 将这个字符串和结果查询作为 sql 查询运行,我得到一个与搜索条件匹配的 2 行结果集。

但是,在我的网站上运行它时,我得到了 6 行的结果,这表明 +("serial ata 600")" 被完全忽略了。

如果我只为字符串“Exact word of statement”输入一个值,那么我们将得到以下输出:

结果表明该字符串将列出所有包含“serial”或“ata”或“600”的行。

通过直接在 mysql 中运行相同的查询,这个结果将列出所有包含“serial ata 600”字样的行。

此运算符的 MySQL 定义中,它指出:

在 MySQL 中就是这种情况,但是当使用 PHP 作为 Prepared Statement 运行相同的查询时,会返回不同的结果集。

这是准备好的声明:

这是$pattern在此之前的输出:

任何人都可以提出这种行为的原因,因为我认为 PHP 和 MySQL 之间的工作方式存在任何差异。

我可以提供与如何根据请求生成字符串有关的任何附加代码,但输出与我的示例中一样。

任何建议/建议/输入/反馈或评论将不胜感激。

0 投票
1 回答
62 浏览

php - 有没有办法默认要求全文搜索中的所有单词?

我正在尝试找到一种方法来实现它,因此当用户进行搜索时,默认情况下需要所有单词。

一开始这似乎很容易,只需将单词分解并+在每个单词的开头添加一个符号即可;但是,当您开始尝试实现其他运算符时,它会变得很复杂。

这是我到目前为止所拥有的..

正如你所看到的,它目前只到了这么远,尊重引用的字符串,但后来我开始考虑不要分解(),然后如果它包含嵌套的双引号,反之亦然......它开始变得非常毛茸茸.

所以我试图弄清楚是否有一种方法可以让我做我想做的事而不会弄乱字符串,并且只制作默认需要的所有单词,除非用户专门用-.

0 投票
1 回答
45 浏览

mysql - 布尔模式搜索单个单词 MySQL 的列

我想在没有全文索引的情况下对我的表执行布尔模式搜索。我的数据集需要非常精细的细节水平,因此我的文档将每个单词作为它自己的行,而不是每个文档都是一行。是否可以将常规索引作为布尔模式搜索的主题,而不是将全文索引(此处显然无用)作为主题?

0 投票
2 回答
612 浏览

php - MySQL/PHP Boolean Fulltext Search Issue in Laravel 4

I have the following code that searches my models in Laravel 4 for a search phrase. It uses 'IN BOOLEAN MODE' and MATCH() and AGAINST().

I'd like help modifying the code above to allow a user to search the fields using partial words and phrases. For example, if a user types purple, I'd like the search to also find any records with email addresses containing the word purple, so info@purplegriffon.com. So, essentially partial matches.

I'd also like to be able to find everything containing griffon in the field for the typed phrase john griffon, even if john does not exist.

Can anyone help me out with this? Cheers.

0 投票
1 回答
207 浏览

mysql - MYSQL Boolean search using table data in same statement

I am looking for the most efficient way to do the following.

I have "table1" with the following columns, ID SavedSearch Price NewLowerPrice

what i need to do is select id and price from table 1, and flag new lower price if the boolean search against another table has a new lower min price for every saved search by the user. here is some code I am using, but i am stuck as to how to use table1's saved search in the following boolean search

it errors out in the update saying "incorrect arguments to AGAINST." thanks in advance!

0 投票
1 回答
101 浏览

php - mysql在一行中找到最佳匹配词

我有下表:

现在我在 php 中有一个查询,并且想查找所有查询所在的所有行。

我喜欢它只找到第 1 行和第 3 行。但结果行是 1、2 和 3。

因此,在表格行中找到所有单词或单词组合很重要。查询不包含不在表中的单词或组合单词(我先检查一下)。

0 投票
1 回答
1781 浏览

arrays - 使用数组的 ElasticSearch 布尔搜索

我希望能够在我的 ElasticSearch 查询中排除一些节点。目前此代码运行良好,但它只会排除两个节点($nodeId1 和 $nodeId2)。

我将如何更改此查询,以便可以使用包含任意数量节点 ID 的数组?谢谢你。