2
所以我有這個表的全文索引列「值」。該字段包含在它的一些數字串,當我使用的查詢,像這樣被正確返回:Oracle CONTAINS()不返回數字結果
select value
from mytable
where value like '17946234';
麻煩的是,因爲在這個表中的很多行這是令人難以置信的慢,但是當我使用CONTAINS運營商我得不到結果:
select value
from mytable
where CONTAINS (value, '17946234',1)>0
任何人有任何想法?
不幸的是,我不是一個Oracle花花公子,並且相同的查詢在SQL Server中正常工作。我覺得它必須是一個停止清單或Oracle Lexer的東西,我可以改變,但不知道如何。
嗨@Abecee - 感謝您的想法。我其實發現問題是什麼。我認爲我們在搜索的字段上使用了CTXSYS.CONTEXT索引,但事實證明這是一個NLS索引,它看起來行爲略有不同......似乎忽略數字字符串,除非它們是貨幣。 所以我已經在那裏添加了一個實際的CTXSYS.CONTEXT索引,並且所有的按預期工作 乾杯 – geckojk 2014-11-12 09:52:51
@geckojk很高興,它解決了。仍然:請仔細檢查,您是否真的需要(通常可能)更昂貴的文本索引。 - 如果像'17946234'這樣的值實際上返回了**所有**所需的記錄,則上面提出的建議應該足夠了(通常更好的表現方式)。 – Abecee 2014-11-12 22:11:48
我們使用文本索引的原因是因爲該字段包含HTML數據(相當大的數量),所以使用LIKE顯示性能很差。 – geckojk 2014-11-13 16:16:47