Stemmer generating tokens off stop words - why??
Apparently when stemming is enabled, the stemmer generates tokens from the stop words which IMHO is contrary to the intent and purpose of the stop words (and goes against common sense).
In my case this results in the index getting bloated with tokens like 'BE' (despite BE, AM, IS, ARE, etc. being stop words) and 'INDIANA' (coming from "IN", despite IN being a stop word).
This bloating contributes (IMHO) to performance problems, so I decided to raise the question.
Here's a short example: (DB is 10.2.0.4)
Creating the test case:
create table book_table (
book_id integer primary key,
book_title varchar2(100) not null
begin
ctx_ddl.create_stoplist('TEST_STOPLIST', 'BASIC_STOPLIST');
ctx_ddl.add_stopword('TEST_STOPLIST', 'be');
ctx_ddl.add_stopword('TEST_STOPLIST', 'is');
ctx_ddl.add_stopword('TEST_STOPLIST', 'are');
ctx_ddl.add_stopword('TEST_STOPLIST', 'this');
ctx_ddl.add_stopword('TEST_STOPLIST', 'these');
ctx_ddl.add_stopword('TEST_STOPLIST', 'in');
end;
begin
ctx_ddl.create_preference('TEST_LEXER','BASIC_LEXER');
ctx_ddl.set_attribute('TEST_LEXER','INDEX_THEMES','NO');
ctx_ddl.set_attribute('TEST_LEXER','INDEX_STEMS','ENGLISH');
end;
begin
ctx_ddl.create_preference('TEST_WORDLIST','BASIC_WORDLIST');
ctx_ddl.set_attribute('TEST_WORDLIST','STEMMER','ENGLISH');
ctx_ddl.set_attribute('TEST_WORDLIST','FUZZY_MATCH','GENERIC');
end;
insert into book_table values (1, 'be this');
insert into book_table values (2, 'is this');
insert into book_table values (3, 'these are');
insert into book_table values (4, 'in these');
commit;
create index book_title_ix
on book_table (book_title)
indextype is ctxsys.context
parameters('
lexer TEST_LEXER
wordlist TEST_WORDLIST
stoplist TEST_STOPLIST
sync (on commit)
/Now let's look at the tokens:
select token_text, token_type, token_count from dr$book_title_ix$i;yields
TOKEN_TEXT TOKEN_TYPE TOKEN_COUNT
BE 9 2
INDIANA 9 1
THIS 9 2So... is this a bug like I think or a "feature"? If it is a feature, is there any way to suppress the behavior? E.g. have stemming enabled but not generate tokens off of the stop words?
Thanks!
This issue is reported in defect 10168916, which is still in progress.
Similar Messages
-
Every time I connect my iPhone 4 (plug it in) to my Windows 7 PC it lauches Microsoft Word. I believe it strarting doing this when I upgraded to the latest iOS a could of weeks ago so that leads me to believe it may not be my PC setting, right? I would like turn it off so Word doesn't launch every time. Thank you.
1) Connect the iPhone to your pc (close Word, and close iTunes)
2) Control Panel (classic view)> Scanners and Cameras
3) Your iPhone should appear here as a camera. Right click and select "Properties"
4) Click the "Events" tab, make sure the "Select an event" pulldown is set to "camera connected"
5) In the "Actions" box, select "Take No Action" and hit OK.
You should be good to go. -
Stop words handling with CONTEXT index - weird behavior
I have a context index with the following output from the report (describe index report).
CTX_REPORT.DESCRIBE_INDEX('KWTI10569_20121010115054')
===========================================================================
INDEX DESCRIPTION
===========================================================================
index name: "METCALF_T"."KWTI10569_20121010115054"
index id: 1524
index type: context
base table: "METCALF_T"."KWTD10569_20121010115054"
primary key column:
text column: MESSAGE_CONTENT
text column type: RAW(2000)
language column:
format column: FMT
charset column: CSET
===========================================================================
INDEX OBJECTS
===========================================================================
datastore: DIRECT_DATASTORE
filter: CHARSET_FILTER
charset: UTF8
section group: NULL_SECTION_GROUP
lexer: BASIC_LEXER
punctuations: .?!
skipjoins: _-"'`~!@#$%^&*()+=|}{[]\:;<>?/,
continuation: \-
index_stems: NONE
wordlist: BASIC_WORDLIST
stemmer: ENGLISH
fuzzy_match: GENERIC
stoplist: BASIC_STOPLIST
stop_word: how
stop_word: however
stop_word: i
stop_word: if
<trimmed for brevity of message......but all default stop words provided by Oracle has been added here>
storage: BASIC_STORAGE
i_table_clause: tablespace TEXT_INDEX storage (initial 10M next 10M)
k_table_clause: tablespace TEXT_INDEX storage (initial 10M next 10M)
r_table_clause: tablespace TEXT_INDEX storage (initial 1M) lob (data) store as (cache)
n_table_clause: tablespace TEXT_INDEX storage (initial 1M)
i_index_clause: tablespace TEXT_INDEX storage (initial 1M) compress 2
DB: 10g (10.2.0.4)
DB characterset: UTF8
Distinct tokens from index:
SQL> select distinct token_text from dr$KWTI10569_20121010115054$i;
TOKEN_TEXT
BLAH
EXPIRE
OFFER
My text content:
SQL>
SQL> select distinct utl_raw.cast_to_varchar2(message_content) from KWTD10569_20121010115054;
UTL_RAW.CAST_TO_VARCHAR2(MESSAGE_CONTENT)
blah blah offer will expire blah blah
offer expire
this offer shall expire
offer to expire
offer expire
blah blah offer expire blah blah
blah blah offer to expire blah blah
blah blah offer expire blah blah
offer will expire
blah blah this offer shall expire blah blah
10 rows selected.
Now, when i perform some contain queries i get some behavior that i cant understand.
When i search for "this offer will expire" i dont get every row (10 rows) - why is that?
SQL> select UTL_RAW.CAST_TO_VARCHAR2(MESSAGE_CONTENT) from KWTD10569_20121010115054 where contains(message_content,'this offer will expire')>0;
UTL_RAW.CAST_TO_VARCHAR2(MESSAGE_CONTENT)
blah blah offer will expire blah blah
this offer shall expire
blah blah offer to expire blah blah
blah blah this offer shall expire blah blah
Also, when i search for "offer expire" i get the following
SQL> select UTL_RAW.CAST_TO_VARCHAR2(MESSAGE_CONTENT) from KWTD10569_20121010115054 where contains(message_content,'offer expire')>0;
UTL_RAW.CAST_TO_VARCHAR2(MESSAGE_CONTENT)
offer expire
blah blah offer expire blah blah
blah blah offer expire blah blah
offer expire
I was thinking that the stop words will be ignored while searching in context grammar, so i would get all my rows back? Isnt that correct?
What i really want to achieve is that all these stop words are stripped from the content AND the keywords when i run the query and i get 100% matches. Any pointers on how that can be accomplished?Roger-
Thanks again. Is there any place in Oracle doc that documents these two facts?
Please see the example below, does the number of words also matter? My search phrase was "the offer will expire" but why is that i didnt get rows like "offer to expire" back?
SQL> select distinct utl_raw.cast_to_varchar2(message_content) from KWTD10569_20121010115054;
UTL_RAW.CAST_TO_VARCHAR2(MESSAGE_CONTENT)
offer expire
blah blah offer expire blah blah
blah blah offer will expire blah blah
this offer shall expire
offer expire
offer to expire
blah blah offer to expire blah blah
blah blah offer expire blah blah
offer will expire
blah blah this offer shall expire blah blah
10 rows selected.
SQL> select UTL_RAW.CAST_TO_VARCHAR2(MESSAGE_CONTENT) from KWTD10569_20121010115054 where contains(message_content,'the offer will expire')>0;
UTL_RAW.CAST_TO_VARCHAR2(MESSAGE_CONTENT)
blah blah offer will expire blah blah
this offer shall expire
blah blah offer to expire blah blah
blah blah this offer shall expire blah blah -
Whenever I go to preview a song in itunes, the song with play out for about 10 seconds and then stop. Why isn't the song previews working? How can I fix this? I tried updating my itunes and it didn't work. I use windows 7. Thanks!
Try:
- iOS: Not responding or does not turn on
- Also try DFU mode after try recovery mode
How to put iPod touch / iPhone into DFU mode « Karthik's scribblings
- If not successful and you can't fully turn the iOS device fully off, let the battery fully drain. After charging for an least an hour try the above again.
- Try another cable
- Try on another computer
- If still not successful that usually indicates a hardware problem and an appointment at the Genius Bar of an Apple store is in order.
Apple Retail Store - Genius Bar -
DME file, is generated with # after every word.
Dear All~
When I'm generating DME file, I see the file is generated with # after every word.
Infact it should generate without #.
Do I need to maintain any settings?
Please share your experience.
Thanks and regards
SriCan you please elaborate your answer.
Please assist me understanding why are we converting LAP from Lightweight mode to Autonomous mode?
The issue is LAP is not able to discover Controller. -
Nls_language to be set for english stop words to work,10gR2 on Linux
Hi,
When we search a phrase using contains and if the phrase has a stop word in it then the stop word is identified by Oracle depending upon the session language.
When I set the nls_language for the session to AMERICAN, stop word is not being detected and when I set the language to 'ENGLISH', it is being detected.
Is this because the english being refered in the Full Text corresponds to 'ENGLISH' and not 'AMERICAN'.
I guess it should refer to both american and english also.
It would be nice if anyone can clarify this ASAP.
Thanks a lot in advance.This is what I am trying to do while creating the index,
begin
execute immediate 'drop table text_search';
exception
when others then
null;
end;
create table text_search (content clob, lang varchar2(3) );
insert into text_search values ('Sun rises in the east','eng');
insert into text_search values ('Sun cet evening','fre');
commit;
begin
ctx_ddl.drop_preference('global_lexer');
exception
when others then
null;
end;
begin
ctx_ddl.drop_preference('english_lexer');
exception
when others then
null;
end;
begin
ctx_ddl.drop_preference('french_lexer');
exception
when others then
null;
end;
begin
ctx_ddl.drop_preference('german_lexer');
exception
when others then
null;
end;
begin
ctx_ddl.create_preference('english_lexer','basic_lexer');
ctx_ddl.create_preference('french_lexer','basic_lexer');
ctx_ddl.create_preference('german_lexer','basic_lexer');
ctx_ddl.set_attribute('german_lexer','composite','german');
ctx_ddl.set_attribute('german_lexer','mixed_case','yes');
ctx_ddl.set_attribute('german_lexer','alternate_spelling','german');
end;
begin
ctx_ddl.create_preference('global_lexer', 'multi_lexer');
ctx_ddl.add_sub_lexer('global_lexer','english','english_lexer','eng');
ctx_ddl.add_sub_lexer('global_lexer','french','french_lexer','fre');
ctx_ddl.add_sub_lexer('global_lexer','german','german_lexer','ger');
ctx_ddl.add_sub_lexer('global_lexer','default','english_lexer');
end;
begin
ctx_ddl.drop_preference('mywordlist');
exception
when others then
null;
end;
begin
ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');
ctx_ddl.set_attribute('mywordlist','STEMMER','ENGLISH');
end;
begin
ctx_ddl.drop_stoplist('multistop');
exception
when others then
null;
end;
begin
ctx_ddl.create_stoplist('multistop', 'MULTI_STOPLIST');
ctx_ddl.add_stopword('multistop', 'cet','french');
ctx_ddl.add_stopword('multistop', 'the','english');
ctx_ddl.add_stopword('multistop', 'for','english');
ctx_ddl.add_stopword('multistop', 'all','english');
ctx_ddl.add_stopword('multistop', 'in','english');
end;
begin
execute immediate 'drop index my_text_search_idx';
exception
when others then
null;
end;
CREATE INDEX my_text_search_idx ON text_search(content)
INDEXTYPE IS CTXSYS.CONTEXT
parameters ('datastore ctxsys.direct_datastore filter ctxsys.null_filter lexer global_lexer wordlist mywordlist language column lang stoplist multistop');
while searching:
NLS_LANGUAGE For the session is 'AMERICAN'.
I run the query,
select * from text_search where contains(content,'$"Sun rises in the east"') >0;
gives no result.
I change the session language as below and the query gives the result.
alter session set nls_language = 'english' ;
Same is happening when I tried for different languages.
Please note that we need to maintain a custom stop list containing stop words for multiple languages. -
Is a Stop Word stopping my query?
I'm executing a query which searches for IN-LAW not NEXT OF KIN. I get a zillion returns on LAW but none on IN-LAW.
I know that we have text with IN-LAW in it.
My question is two-part:
1) are the Stop Words, in this case IN, interfering?
2) What can I do to get around this? How do I form my query to accomodate this?
NEXT OF KIN works just fine but no examples of IN-LAW are returned.
Thanks.IN and OF are default stopwords, so it you want them to be tokenized, indexed, and searchable, you need to specify a stoplist that does not include them. A hyphen has special meaning to Oracle Text and is the same as MINUS, which tells it to subtract the score of the second term from the score of the first term. If you want characters that have special meaning to be treated like regular characters, you need to escape them, either by putting a backslash in front of an individual character or by surrounding a whole phrase in curly braces. Please see the demonstration below. By default, once you have specified that a hyphen is to be treated as a regular character, it is regarded a whitespace, so IN and LAW are tokenized separately and "IN-LAW" and "IN LAW" are treated the same. If you want to treat them separately, then you would also need to specify the hyphen as a printjoin in a lexer and specify that lexer in your index parameters.
SCOTT@10gXE> CREATE TABLE test_tab (test_col VARCHAR2 (30))
2 /
Table created.
SCOTT@10gXE> INSERT ALL
2 INTO test_tab VALUES ('IN-LAW')
3 INTO test_tab VALUES ('IN LAW')
4 INTO test_tab VALUES ('NEXT OF KIN')
5 INTO test_tab VALUES ('IN')
6 INTO test_tab VALUES ('LAW')
7 INTO test_tab VALUES ('NEXT OF KIN')
8 INTO test_tab VALUES ('NEXT')
9 INTO test_tab VALUES ('OF')
10 INTO test_tab VALUES ('KIN')
11 INTO test_tab VALUES ('IN-LAW NEXT OF KIN')
12 INTO test_tab VALUES ('IN-LAW NEXT WHATEVER OF KIN')
13 INTO test_tab VALUES ('IN-LAW KIN')
14 INTO test_tab VALUES ('IN LAW KIN')
15 SELECT * FROM DUAL
16 /
13 rows created.
SCOTT@10gXE> CREATE INDEX test_ind ON test_tab (test_col)
2 INDEXTYPE IS CTXSYS.CONTEXT
3 PARAMETERS
4 ('STOPLIST CTXSYS.EMPTY_STOPLIST')
5 /
Index created.
SCOTT@10gXE> SELECT token_text FROM dr$test_ind$i
2 /
TOKEN_TEXT
IN
KIN
LAW
NEXT
OF
WHATEVER
6 rows selected.
SCOTT@10gXE> SELECT * FROM test_tab WHERE CONTAINS (test_col, 'IN-LAW not NEXT OF KIN') > 0
2 /
TEST_COL
IN
SCOTT@10gXE> SELECT * FROM test_tab WHERE CONTAINS (test_col, 'IN\-LAW not NEXT OF KIN') > 0
2 /
TEST_COL
IN-LAW
IN LAW
IN-LAW NEXT WHATEVER OF KIN
IN-LAW KIN
IN LAW KIN
SCOTT@10gXE> SELECT * FROM test_tab WHERE CONTAINS (test_col, '{IN-LAW} not NEXT OF KIN') > 0
2 /
TEST_COL
IN-LAW
IN LAW
IN-LAW NEXT WHATEVER OF KIN
IN-LAW KIN
IN LAW KIN
SCOTT@10gXE>
SCOTT@10gXE> spool off -
Windows 8 and iPhone stopped synching - why would that be?
Windows 8 and iPhone stopped synching - why would that be? I never get the opportunity to specify a device. Used to work.
I second that
Windows 8 and iTunes 11.1.2.31 + iPhone 4
same thing with
Windows 8 and iTunes 11.1.2.31 + iPod classic 120Gb
Was happily syncing music ... itunes asked to update, i said yes
THANKS APPLE
30Gb of music of my ipod gone ..... thank you thank you...
idiots!! -
How to find out the stop words of an index?
I am sure it's something very easy but:
I want to find out the stop words that i am using in a particular index via SQL query?
I had several indexes with diferent stoplists.
ThanksI already found out.
thanks.
for anyone also looking see
select * from ctx_stopwords; -
Steps to generate Token for opendoc url call in XI3.1
Hi Guys,
I am quite new to Sdk's and java programming .
I am trying to get some help in generating token for opendoc url to avoid login while trying to access a report in Infoview.
From a previous post I got this code:
<%@ page import="com.crystaldecisions.sdk.framework.*" %>
<%@ page import="com.crystaldecisions.sdk.exception.SDKException" %>
<%@ page import="com.crystaldecisions.sdk.occa.security.*" %>
<%
boolean loginSuccessful = false;
IEnterpriseSession boEnterpriseSession = null;
String username = "Administrator";
String password = "pwd";
String cmsname = "CMS";
String authenticationType = "secEnterprise";
try {
//Log in.
boEnterpriseSession = CrystalEnterprise.getSessionMgr().logon( username, password, cmsname, authenticationType);
if (boEnterpriseSession == null) {
out.print("<FONT COLOR=RED><B>Unable to login.</B></FONT>");
} else {
loginSuccessful = true;
} catch (SDKException sdkEx) {
out.print("<FONT COLOR=RED><B>ERROR ENCOUNTERED</B><BR>" + sdkEx + "</FONT>");
if (loginSuccessful) {
ILogonTokenMgr boLogonTokenMgr = boEnterpriseSession.getLogonTokenMgr();
String logonToken = boLogonTokenMgr.createLogonToken("", 60, 1);
String infoViewURL = null;
String tokenParam = null;
String redirectURL = null;
infoViewURL = "http://server:8080/InfoViewApp/logon.jsp";
tokenParam = "ivsLogonToken=" + logonToken;
redirectURL = infoViewURL + "&" + tokenParam;
response.sendRedirect(redirectURL);
%>
The problem is I don't know where to put this code in the opendoc.jsp file.
I tried to create a custom OpenDoc.jsp with a above code, leaving the original opendoc.jsp as it is. And used this custom jsp file in the opendoc url. This is taking me to Infoview login page and I see taht a token is created at the end of the url but it is not passed.
Can somebody help me to understand where exactly to put this code in the opendoc.jsp and any correction to this code or additional steps to get it working.
Any help is greatly appreciated!The code above is meant to redirect you to InfoView. Change the last bit of code as follows:
//add any opendocument parameters to the URL here
openDocURL = "http://server:8080/OpenDocument/opendoc/openDocument.jsp"
tokenParam = "token=" + logonToken;
redirectURL = openDocURL + "&" + tokenParam;
response.sendRedirect(redirectURL); -
Help on generating token for opendoc url in XI3.1
Hi Guys,
I am trying to get some help in generating token for opendoc url to avoid login while trying to access a report in Infoview.
From a previous post I got this code:
<%@ page import="com.crystaldecisions.sdk.framework.*" %>
<%@ page import="com.crystaldecisions.sdk.exception.SDKException" %>
<%@ page import="com.crystaldecisions.sdk.occa.security.*" %>
<%
boolean loginSuccessful = false;
IEnterpriseSession boEnterpriseSession = null;
String username = "Administrator";
String password = "pwd";
String cmsname = "CMS";
String authenticationType = "secEnterprise";
try {
//Log in.
boEnterpriseSession = CrystalEnterprise.getSessionMgr().logon( username, password, cmsname, authenticationType);
if (boEnterpriseSession == null) {
out.print("Unable to login.");
} else {
loginSuccessful = true;
} catch (SDKException sdkEx) {
out.print("ERROR ENCOUNTERED
" + sdkEx + "");
if (loginSuccessful) {
ILogonTokenMgr boLogonTokenMgr = boEnterpriseSession.getLogonTokenMgr();
String logonToken = boLogonTokenMgr.createLogonToken("", 60, 1);
String infoViewURL = null;
String tokenParam = null;
String redirectURL = null;
infoViewURL = "http://server:8080/InfoViewApp/logon.jsp";
tokenParam = "ivsLogonToken=" + logonToken;
redirectURL = infoViewURL + "&" + tokenParam;
response.sendRedirect(redirectURL);
%>
The problem is I don't know where to put this code in the opendoc.jsp file.
I tried to create a custom OpenDoc.jsp with a above code, leaving the original opendoc.jsp as it is. And used this custom jsp file in the opendoc url. This is taking me to Infoview login page and I see taht a token is created at the end of the url but it is not passed.
Can somebody help me to understand where exactly to put this code in the opendoc.jsp and any correction to this code or additional steps to get it working.
Any help is greatly appreciatedStratos,
Thanks for your inputs,
I changed the code as you suggested , now my whole code looks like :
<%@ page import="com.crystaldecisions.sdk.framework.*" %>
<%@ page import="com.crystaldecisions.sdk.exception.SDKException" %>
<%@ page import="com.crystaldecisions.sdk.occa.security.*" %>
<%
boolean loginSuccessful = false;
IEnterpriseSession boEnterpriseSession = null;
String username = "user";
String password = "Password";
String cmsname = "Server";
String authenticationType = "secEnterprise";
try {
//Log in.
boEnterpriseSession = CrystalEnterprise.getSessionMgr().logon( username, password, cmsname, authenticationType);
if (boEnterpriseSession == null) {
out.print("<FONT COLOR=RED><B>Unable to login.</B></FONT>");
} else {
loginSuccessful = true;
} catch (SDKException sdkEx) {
out.print("<FONT COLOR=RED><B>ERROR ENCOUNTERED</B><BR>" + sdkEx + "</FONT>");
if (loginSuccessful) {
ILogonTokenMgr boLogonTokenMgr = boEnterpriseSession.getLogonTokenMgr();
String logonToken = boLogonTokenMgr.createLogonToken("", 60, 1);
//String logonToken = boLogonTokenMgr.getDefaultToken();
String infoViewURL = null;
String tokenParam = null;
String redirectURL = null;
infoViewURL = "http://Server:8080/InfoViewApp/logon.jsp";
tokenParam = "ivsLogonToken=" + logonToken;
redirectURL = infoViewURL + "&" + tokenParam;
pageContext.forward( "openDocument.jsp?iDocID=" + 4668 + "&token=" + tokenParam);
%>
But I am still getting the Infoview Login Page . The url on the login page is
http://server:8080/OpenDocument/opendoc/logonTrustedAuth.do?appKind=InfoView&iDocID=4668&isApplication=true&token=ivsLogonToken%server%3A6400%4021181JIipxt70VM0kd90v21179JFd4dHn7kW2FKSBi
We can see that a token is being generated and appended to this url but it is not passing the user name and password.
Please let me know what you think about this. -
Word for mac keeps stopping, word for mac keeps stopping
word for mac keeps stopping, word for mac keeps stopping
I am trying to make some business cards in the program provided and when I copy it starts thinking and working and then stops.
This cause me to wait and then have to do the hole process over agin with the same happening the next time.That sounds like a Microsoft issue, please re-post in the Office for Mac Product Forums.
Good luck. -
Good morning i already bought the converter pdf to word ,why you guys charged again
hello Good morning i already bought the converter pdf to word ,why you guys charged again@
I suggest that you Contact Customer Care - click on the Still need help? button to chat with an agent.
[topic moved to ExportPDF forum] -
Once I convert pdf to WORD, why can't I edit the WORD document?
Once i convert PDF to WORD, why can't i edit the WORD document?
Hi sophtex,
Kindly refer this FAQ:Can't edit converted Word or Excel file
Please let me know for further assistance.
Regards,
Florence -
Do i have to add stop words one at a time?
I'm trying to creat an index and want to add stop words, but it seems crazy that I can't just reference a list in plain text or drap drop such a list?
Or do I really have to add them one at a time?
cheersThere are no global activations.
There is also no need to activate all apps... not all apps require activation.
Maybe you are looking for
-
General observation about Yosemite
Not liking it, guys. I don't like the presentation. Buttons and icons look even more fake than usual. Looks dumpy, silly, like a cheap child's toy. Tabs in Safari may be meant to be unobtrusive, but come on. I would prefer the ability to change the d
-
Hi guys, I have to display the 'delete_line' button in alv toolbar, but this button doesn't exist, altough this button is a standard button. how can I do this? PS : I am working on alv not editable, but I must have possibility to deleting lines. need
-
i issued a dbstart as oracle user in solaris, and the 3 instances started alright. For some reason having connect as sysdba with sqlplus, i still get ORA-01034. 1. i need to shutdown down the instance 2. possibly see if i can resolve the ORA-01034 er
-
I have a TRIAL VERSION of LR 5. It expired today. I just joined CC. LR5 is asking me for a Serial Number when I try to open it. How do I get LR 5 to recognize my CC membership? I also had a Photoshop CC trial on my computer which was expired, but tha
-
My MacBook has crashed...it started with capitals letters sticking and always starting in safe mode and now despite efforts to restore from my Lacie externall drive I can't get anything on screen except a grey "stop" sign