There's also a problem going with the QueryContext approach... an
IndexSearcher can be shared by multiple threads and multiple queries so
using IndexSearcher#setSimilarity can't be done on a per-query basis.
Setting a similarity in one query may also set it for another thread/query
which might not want it. So maybe the only option is to go with the
configuration parameter, so that all IndexWriters and IndexSearchers for
that index gets that Similarity instance set.

WDYT?

2010/11/18 Mattias Persson <[email protected]>

> Allright, then there probably have to be a configuration parameter for
> similarity, and maybe something in QueryContext as well (if you wouldn't use
> the configuration parameter).
>
>
> 2010/11/18 Samuel Feng <[email protected]>
>
>> From
>>
>> http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Similarity.html
>>
>> <
>> http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Similarity.html
>> >If
>> the custom Similarity overwrite the
>> *lengthNorm<
>> http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Similarity.html#lengthNorm(java.lang.String<http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Similarity.html#lengthNorm%28java.lang.String>
>> ,
>> int)>*(field)<
>> http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Similarity.html#lengthNorm(java.lang.String<http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Similarity.html#lengthNorm%28java.lang.String>
>> ,
>> int)> method of DefaultSimilarity, need to set the Similarity during
>> writing
>> index.
>>
>>
>> 2010/11/19 Mattias Persson <[email protected]>
>>
>> > 2010/11/18 Samuel Feng <[email protected]>
>> >
>> > > Hi,
>> > >
>> > > To my understanding, if you use one
>> > > Similarity in indexWriter, you should also use it in indexSearcher.
>> > >
>> > > And the scoring is not written during writing index, as it depends on
>> the
>> > > relationship between query terms and the indexed documents. It is
>> > > calculated
>> > > for each query.
>> > >
>> >
>> > But is it a benefit to use it in writer and/or searcher? Is the
>> similarity
>> > needed at all during writing?
>> >
>> >
>> > >
>> > >
>> > > 2010/11/18 Mattias Persson <[email protected]>
>> > >
>> > > > > > Hi,
>> > > >
>> > > > > > >
>> > > > >> > > I am new to neo4j.
>> > > > >> > >
>> > > > >> > > I am using a custom analyzer in index in order to support
>> > Chinese.
>> > > > >> > >
>> > > > >> > >    chnIndex =
>> this.graphDb.index().forNodes("product_chinese",
>> > > > >> > >        MapUtil.stringMap("analyzer",
>> > > > >> > > "org.wltea.analyzer.lucene.IKAnalyzer"));
>> > > > >> > >
>> > > > >> > > Below is the usage of the IKAnalyzer in lucence.
>> > > > >> > >
>> > > > >> > >      IndexSearcher isearcher = new IndexSearcher(directory);
>> > > > >> > >      isearcher.setSimilarity(new IKSimilarity());   // A
>> custom
>> > > > >> > Similarity
>> > > > >> > >      String word = "OLYMPUS 奥林巴斯 E-PL1 时尚白 微型4/3系统相机 套机
>> > > 含14-42mm镜头";
>> > > > >> > >      Query query = IKQueryParser.parse(fieldName, word );  //
>> A
>> > > > custom
>> > > > >> > > QueryParser
>> > > > >> > >      TopDocs topDocs = isearcher.search(query, 5); // Got the
>> > top
>> > > 5
>> > > > >> > >      System.out.println("Found " + topDocs.totalHits);
>> > > > >> > >      ScoreDoc[] scoreDocs = topDocs.scoreDocs;
>> > > > >> > >      for (int i = 0; i < topDocs.totalHits; i++) {
>> > > > >> > >        System.out.println(scoreDocs[i].score); // Got the
>> score
>> > of
>> > > > >> each
>> > > > >> > > matched doc
>> > > > >> > >        Document targetDoc = isearcher.doc(scoreDocs[i].doc);
>> > > > >> > >        System.out.println("Document content is " +
>> > > > >> targetDoc.toString());
>> > > > >> > >      }
>> > > > >> > >
>> > > > >> > > How can I use the query method of neo4j's indexing to
>> implement
>> > > > >> > > 1) Add my custom Similartiy implemtation
>> > > > >>
>> > > > >
>> > > > Btw, what's the difference between setting Similarity on IndexWriter
>> > vs.
>> > > > IndexSearcher? Is it performance maybe, that if it's set on the
>> > > IndexWriter
>> > > > then the scoring is written during writes, but if it's set on
>> > > IndexSearcher
>> > > > it's calculated for each query?
>> > > > _______________________________________________
>> > > > Neo4j mailing list
>> > > > [email protected]
>> > > > https://lists.neo4j.org/mailman/listinfo/user
>> > > >
>> > > _______________________________________________
>> > > Neo4j mailing list
>> > > [email protected]
>> > > https://lists.neo4j.org/mailman/listinfo/user
>> > >
>> >
>> >
>> >
>> > --
>> > Mattias Persson, [[email protected]]
>> > Hacker, Neo Technology
>> > www.neotechnology.com
>> > _______________________________________________
>> > Neo4j mailing list
>> > [email protected]
>> > https://lists.neo4j.org/mailman/listinfo/user
>> >
>> _______________________________________________
>> Neo4j mailing list
>> [email protected]
>> https://lists.neo4j.org/mailman/listinfo/user
>>
>
>
>
> --
> Mattias Persson, [[email protected]]
> Hacker, Neo Technology
> www.neotechnology.com
>



-- 
Mattias Persson, [[email protected]]
Hacker, Neo Technology
www.neotechnology.com
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to