1

我首先问了这个问题我希望选择包含数组中任何元素的所有行 虽然我当前的问题几乎相同,但它的目的完全不同,所以我担心答案可能会有所不同,这会掩盖前一个, 照这样说。

我正在研究搜索引擎类型的东西。我需要搜索存储在数据库中的标题,以查看它是否包含搜索文本框中的任何单词。然后我计划遍历这些行中的每一行,计算有多少单词匹配并相应地对结果进行排名。我相信这已经做了很多次了。我似乎无法弄清楚如何做到这一点

select * from table

然后在c#中对其进行排序

4

2 回答 2

4

sql server 中的一种方法是

像这样推临时表中的单词

DECLARE @SearchWords TABLE (
  word varchar(30) )

INSERT INTO @SearchWords
        (word)
VALUES  ('Jack')
       ,('Pontiac')
       ,('Bloggs');

而不是将此表与实际表连接起来

SELECT a.* FROM table_data a
INNER JOIN @SearchWords b on a.record_desc like '%' + b.word + '%'
于 2012-05-09T19:03:13.487 回答
2

你可以尝试这样的事情:

SELECT * FROM table WHERE name LIKE '%word1%' OR name LIKE '%word2%';

这些%标志与典型搜索中的类似*

要获取字符串并为多个单词创建此查询,您可以执行以下操作:

String inputString = "hello my friend";
String[] wordlist = inputString.split(" ");
String query = "SELECT * FROM table WHERE 0=0 ";
for(String word : wordlist) {
    query += "OR name LIKE '%" + word + "%' "; 
}

字符串末尾的空格很重要,不要忘记!此外,您可能需要在拆分字符串之前对其进行清理(删除额外的标点符号,甚至可能删除“a”或“the”或“to”等单词)

于 2012-05-09T18:56:46.533 回答