Thanks Ian,

   That's what I needed, things now work like a charm.
   someone really should put this in a blog or something :D

   good day



2017-02-17 21:16 GMT+08:00 Ian Lea <ian....@gmail.com>:
> Hi
>
>
> Sounds like you should use FieldType.setTokenized(false).  For the
> equivalent field in some of my lucene indexes I use
>
> FieldType idf = new FieldType();
> idf.setStored(true);
> idf.setOmitNorms(true);
> idf.setIndexOptions(IndexOptions.DOCS);
> idf.setTokenized(false);
> idf.freeze();
>
> There's also PerFieldAnalyzerWrapper,  in oal.analysis.miscellaneous for
> version 6.x although I have a feeling it was elsewhere in earlier versions.
>
>
> --
> Ian.
>
>
>
> On Fri, Feb 17, 2017 at 12:26 PM, Armnotstrong <zhaoxmu...@gmail.com> wrote:
>
>> Thanks, Ian:
>>
>> You saved my day!
>>
>> And there is a further question to ask:
>>
>> Since the analyzer could only be configured through the IndexWriter,
>> using  different
>> analyzers for different Fields is not possible, right? I only want
>> this '_id' field to identify
>> the document in index, so I could update or delete the specific
>> document from index
>> when needed, the real searching field is a text field, which should be
>> analysed by
>> smart_cn analyser.
>>
>> Thus, I think it will good to have such an configure option as
>> IndexOptions.NOT_ANALYSED.
>> I remember to have that in the old version of lucene, but not found in
>> version 5.x
>>
>> Any suggestion to bypass that?
>>
>> Sorry for my bad English.
>>
>> 2017-02-17 19:40 GMT+08:00 Ian Lea <ian....@gmail.com>:
>> > Hi
>> >
>> >
>> > SimpleAnalyzer uses LetterTokenizer which divides text at non-letters.
>> > Your add and search methods use the analyzer but the delete method
>> doesn't.
>> >
>> > Replacing SimpleAnalyzer with KeywordAnalyzer in your program fixes it.
>> > You'll need to make sure that your id field is left alone.
>> >
>> >
>> > Good to see a small self-contained test program.  A couple of suggestions
>> > to make it even better if there's a next time:
>> >
>> > Use final static String ID = "_id" and ... KEY =
>> > "5836962b0293a47b09d345f1".  Minimises the risk of typos.
>> >
>> > And use RAMDirectory.  Means your program doesn't leave junk on my disk
>> if
>> > I run it, and also means it starts with an empty index each time.
>> >
>> >
>> > --
>> > Ian.
>> >
>> >
>> > On Fri, Feb 17, 2017 at 10:04 AM, Armnotstrong <zhaoxmu...@gmail.com>
>> wrote:
>> >
>> >> Hi, all:
>> >>
>> >> I am Using version 5.5.4, and find can't delete a document via the
>> >> IndexWriter.deleteDocuments(term) method.
>> >>
>> >> Here is the test code:
>> >>
>> >> import org.apache.lucene.analysis.core.SimpleAnalyzer;
>> >> import org.apache.lucene.document.Document;
>> >> import org.apache.lucene.document.Field;
>> >> import org.apache.lucene.document.FieldType;
>> >> import org.apache.lucene.index.*;
>> >> import org.apache.lucene.queryparser.classic.ParseException;
>> >> import org.apache.lucene.queryparser.classic.QueryParser;
>> >> import org.apache.lucene.search.IndexSearcher;
>> >> import org.apache.lucene.search.Query;
>> >> import org.apache.lucene.search.ScoreDoc;
>> >> import org.apache.lucene.store.Directory;
>> >> import org.apache.lucene.store.FSDirectory;
>> >>
>> >> import java.io.IOException;
>> >> import java.nio.file.Paths;
>> >>
>> >> public class TestSearch {
>> >>     static SimpleAnalyzer analyzer = new SimpleAnalyzer();
>> >>
>> >>     public static void main(String[] argvs) throws IOException,
>> >> ParseException {
>> >>         generateIndex("5836962b0293a47b09d345f1");
>> >>         query("5836962b0293a47b09d345f1");
>> >>         delete("5836962b0293a47b09d345f1");
>> >>         query("5836962b0293a47b09d345f1");
>> >>
>> >>     }
>> >>
>> >>     public static void generateIndex(String id) throws IOException {
>> >>         Directory directory = FSDirectory.open(Paths.get("/
>> >> tmp/test/lucene"));
>> >>         IndexWriterConfig config = new IndexWriterConfig(analyzer);
>> >>         IndexWriter iwriter = new IndexWriter(directory, config);
>> >>         FieldType fieldType = new FieldType();
>> >>         fieldType.setStored(true);
>> >>         fieldType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_
>> >> AND_POSITIONS_AND_OFFSETS);
>> >>         Field idField = new Field("_id", id, fieldType);
>> >>         Document doc = new Document();
>> >>         doc.add(idField);
>> >>         iwriter.addDocument(doc);
>> >>         iwriter.close();
>> >>
>> >>     }
>> >>
>> >>     public static void query(String id) throws ParseException,
>> IOException
>> >> {
>> >>         Query query = new QueryParser("_id", analyzer).parse(id);
>> >>         Directory directory = FSDirectory.open(Paths.get("/
>> >> tmp/test/lucene"));
>> >>         IndexReader ireader  = DirectoryReader.open(directory);
>> >>         IndexSearcher isearcher = new IndexSearcher(ireader);
>> >>         ScoreDoc[] scoreDoc = isearcher.search(query, 100).scoreDocs;
>> >>         for(ScoreDoc scdoc: scoreDoc){
>> >>             Document doc = isearcher.doc(scdoc.doc);
>> >>             System.out.println(doc.get("_id"));
>> >>         }
>> >>     }
>> >>
>> >>     public static void delete(String id){
>> >>         try {
>> >>              Directory directory =
>> >> FSDirectory.open(Paths.get("/tmp/test/lucene"));
>> >>             IndexWriterConfig config = new IndexWriterConfig(analyzer);
>> >>             IndexWriter iwriter = new IndexWriter(directory, config);
>> >>             Term term = new Term("_id", id);
>> >>             iwriter.deleteDocuments(term);
>> >>             iwriter.commit();
>> >>             iwriter.close();
>> >>         }catch (IOException e){
>> >>             e.printStackTrace();
>> >>         }
>> >>     }
>> >> }
>> >>
>> >>
>> >> --
>> >> ========================================
>> >> best regards & a nice day
>> >> Zhao Ximing
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
>> >> For additional commands, e-mail: java-user-h...@lucene.apache.org
>> >>
>> >>
>>
>>
>>
>> --
>> ========================================
>> best regards & a nice day
>> Zhao Ximing
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
>> For additional commands, e-mail: java-user-h...@lucene.apache.org
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to