sql查询相对搜索以前搜索过的单词

时间:2011-01-16 22:45:59

标签: sql sqlite

我有表格中的单词列表。我想搜索包含的所有记录,例如书和书,钢笔和钢笔,这意味着,所有以's'结尾的词。查询应该显示没有's'的单词和带's'的单词。 不是查询"SELECT * FROM words WHERE word LIKE '%s'" 架构定义是,

words = <word, part_of_speech&gt;

我必须搜索'word' 我怎样才能做到这一点? 结果可能是,

book
books
pen
pens

它的类似,如果列中有一个值为'word',另有一个值为'word'+'s',则显示'word'和'word'+'s'的行。 我正在使用sqlite。

3 个答案:

答案 0 :(得分:1)

SELECT word FROM words WHERE word LIKE 'book%'

将匹配'book','books','bookmark'等

答案 1 :(得分:0)

如果您只想搜索特定的sufix,请尝试

SELECT
    *
FROM
    words
WHERE
    word = '%s'
    or word = '%s' || 's' #change 's' to any addition you want to try

答案 2 :(得分:0)

Google“Porter Stemming Algorithm”并将其应用于您加载之前的数据。这个算法尽可能接近不仅将复数而且将许多其他形式的单词转换为单个单词。例如,“学者”成为“学者”和类似的东西。

如果这不符合您的质量标准,因为它不会陷入“鼠标”和其他答案中给出的其他示例,您将不得不找到“词干文件”。我知道没有免费的(这并不意味着没有),但我们在商店使用的那个是商业套餐的一部分,所以我从来没有找到一个免费的。

无论如何,一旦你将词干应用到路上的单词,你就不再需要搜索单词的多个版本,只需搜索词干。