Hello, > Hi everyone, > > I told you I'd be back with more questions! :-) > Here is my situation. In my application, the field to be searched is > selected via a drop-down box. I want my searches to basically > be "contains" > searches - I take what the user typed in, put a wildcard > character at the > beginning and end, and put that in a WildcardQuery with the > selected field. > In simple cases, this works great.
It does sound very strange to me, to default to a WildCardQuery! Suppose I am looking for "bold", I am getting hits for "old". IMO, you should move the WildcardQuery and just use a simple QueryParser (with the analyzer you use at indexing time). Your problem below arises from the fact that you construct your search with WildcardQuery(Term t) and t = new Term("field","Joe's"); But, now you are looking for a term that is very likely not to be present in the index, although you idnexed text that contains "Joe's". The StandardAnalyzer() for example would probably split in ' , and ignores the s. If you use queryparser instead of creating your own term, you are save (and you have no problems with case-sensitive either). If you do not really understand why it works like this, it might be good to play around with luke: open your index with luke, go to plugins tab, and put in some text and see how it is tokenized with some sample analyzers. Regards Ard > > But, the StandardAnalyzer and SimpleAnalyzer is removing some > characters I > need. For example, one of my objects has a name of "Joe's > Devices". If I > search for "Joe's", it doesn't work, because the apostrophe > is stripped out. > I tried using the KeywordAnalyzer, which keeps the string > intact, but then > won't my searches be case-sensitive? This is easy to fix of course by > calling toLowerCase() on the text when it is indexed, but > then later when > retrieved from the index to be displayed in the search results, "Joe's > Devices" is displayed as "joe's devices". Is there anything I > can do here > short of putting two copies of the name in the document - one > indexed/not > stored ("joe's devices"), and one stored/not indexed("Joe's > Devices") ? Or > can I accomplish this case-insensitive "contains" search some > other way - > would I have to write a custom Analyzer, or something? > > Thanks in advance! > > -- > Joe Attardi > [EMAIL PROTECTED] > http://thinksincode.blogspot.com/ > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]