我想在我的网站上做一个搜索工具。我用的是php。搜索时应采用哪些标准。例如:如果有人搜索
How to make soap
我可以使用许多方法进行搜索,比如查找具有完全相同的搜索字符串的数据库条目,或者按照搜索关键字的顺序查找数据库条目(即:带有搜索字符串"How“+" soap”的条目将比具有搜索字符串"how soap make“的条目具有更低的优先级)...
那么通常用于搜索的算法是什么呢?
还有,什么是全文搜索?
我正在使用MySQL全文搜索,但在字段中字符串是单词的一部分的情况下,我发现它缺少它。如果我的字段是"New York Times“,而我搜索"Time”,则得不到任何结果。解决此问题的黑客方法是设置两个查询,一个执行全文搜索,另一个执行:
SELECT * FROM ___ WHERE 'string' LIKE %searchterm%
有没有什么方法可以设置全文搜索来解决这个问题,这样我就不必运行额外的查询了?
我在SQL 2012中有一个表,我正在对它执行全文搜索。
其中一个记录,作为一个较大字符串的一部分,文本“尝试您的系统”。
问题是,如果我在目标字符串中搜索两个太接近的单词,我就得不到匹配。
select * from mytable where contains(*,'trying') -- match
select * from mytable where contains(*,'trying and out') -- no match
select * from mytable where contains(*,'trying and your
在规范了我的db之后,我现在对myias表使用全文搜索。
我有几种搜索方案
在“你好朋友”中搜索“你好”
在“你好朋友,欢迎来到地狱”中搜索“地狱”
搜索“星期五”结尾“来玩星期五”结尾
我需要最好的匹配,目前正在使用
SELECT cu.ID as UID ,MATCH cu.content AGAINST ('hell') as relevance
FROM cht_user cu
JOIN cht_agent_script cas ON ( cas.UID = cu.ID AND cas.AID = '315')
WHERE M
我有一张MySQL桌子
id | description | tags |
1 hi man tag1;tag2;tag3
2 hi woman tag0;tag2;tag9
我想知道建立一个简单的搜索引擎的最佳实践是什么?可以让搜索关键字优先于MySQL查询,或者需要更复杂的东西,如elasticsearch,lucene,sphinx等。??
我实现了一个多到多的标签系统,现在我想实现全文搜索。问题在起作用,也不起作用。如果我使用搜索术语tag1 AND tag2 AND tag3搜索一个项目,即使我的记录被所有三个标记标记,我也不会得到任何行。
为了解决这个问题,我尝试了一个标量函数来连接我的标记并将其包装在视图中。但是,由于以下错误,此操作失败:
无法在视图“视图”上创建索引,因为视图引用的函数"dbo.GetTags“执行用户或系统数据访问。
我只限制了对OR的搜索,但我现在有另一个多到多的关系,它在join表中有更多的信息,我也想搜索这些信息,这需要一个AND。
我能想到的唯一选项是unioning、一堆in
在我的网站上有一个搜索表单,它根据搜索的单词顺序返回不同的结果。下面是两个搜索词的WHERE之后我继续查询的一部分:
(name_ru = '".words[0]."' or name_ru like '".words[0]."%' or name_ru like '% ".words[0]."%' or name_ru like '"".words[0]."%' or brief_description_ru like '%".words[0
这是我的过滤文本:
奥利弗用过的书
如果我搜索'Oliver‘,它会工作,如果我搜索'book’,它会工作,但是如果我搜索'used‘,它就无效。
暖气白风机HEOP1322
Heater -> works : white -> works : fan -> does not work : HEOP -> does not work : HEOP1322 -> works.
我的查询如下:
SELECT * FROM table WHERE MATCH(filter) AGAINST ('fan' IN BO
我有一个包含大约500.000条记录的表data,该表有:
id,
title,
created_date,
content...
列。在这些列中,content列包含大尺寸文本。
我已经使用了搜索查询:
SELECT count(*) from data WHERE content LIKE (%keyword%);
该查询的执行时间约为9秒。
我尝试使用全文搜索并使用以下查询
SELECT count(*) from data
WHERE MATCH(content) AGAINST ('keyword*' IN BOOLEAN MODE);
查询的执行时间要短得